4 Data curation and visualisation¶

Importing libraries¶

In [163]:
from brightway2 import *
import os               # to use "operating system dependent functionality"
import numpy as np      # "the fundamental package for scientific computing with Python"
import pandas as pd     # "high-performance, easy-to-use data structures and data analysis tools" for Python

import matplotlib.pyplot as plt
from scipy.stats import rankdata
import string
import pickle 
import seaborn as sns
import matplotlib as mpl
%matplotlib inline
from matplotlib.ticker import ScalarFormatter

Projects setting¶

In [164]:
projects.set_current('pLCA_RegAC_results_and_visualisation')

ImpactWorld+ import¶

In [165]:
# Import the specified BW2Package for the LCIA method IMPACTWorld+ file from the given path or import it to the same file location as this notebook
package_world_plus= BW2Package.import_file(r"C:\Users\kmadu\OneDrive - Danmarks Tekniske Universitet\Work\GENESIS\prospective LCA\Sensitivity and uncertainty\IMPACT-World-in-Brightway-1.28_1.46\laurepatou-IMPACT-World-in-Brightway-d949b33\Brightway_IW_damage_1_46_and_midpoint_1_28.bw2package")
# The water use method needs to be updated due to the fact that it was wrongly created.
# Filter the methods list to find the desired method for 'IMPACTWorld+ (Default_Recommended_Midpoint 1.28)'.
# Then, load the method and its characterization factors into the WS_lst variable.
IWP_mid = [m for m in methods if 'IMPACTWorld+ (Default_Recommended_Midpoint 1.28)' in m[0]]
WS = Method(IWP_mid[9])
WS_lst = WS.load()

# Define and remove certain characterization factors (CF) from the WS_lst.
ex_CF = (('biosphere3', '2404b41a-2eed-4e9d-8ab6-783946fdf5d6'), -42.95353086694035)
ex_CF_ocean = (('biosphere3', '4f0f15b3-b227-4cdc-b0b3-6412d55695d5'), 0)
WS_lst.remove(ex_CF)
WS_lst.remove(ex_CF_ocean)

# Define a new characterization factor and add it to the WS_lst.
new_CF = (('biosphere3', '8c1494a5-4987-4715-aa2d-1908c495f4eb'), 42.95353086694035)
WS_lst.append(new_CF)

# Create a new Method instance for the updated 'Water scarcity' method.
# Register the new method and write the updated characterization factors to it.
new_WS = Method(('IMPACTWorld+ (Default_Recommended_Midpoint 1.28)', 'Water scarcity'))
new_WS.register()
new_WS.write(WS_lst)

Assigning methods and units required for axis labels in visualisations

In [166]:
IWP_mid = [m for m in methods if 'IMPACTWorld+ (Default_Recommended_Midpoint 1.28)' in m[0]]
units_IWP_mid=['kg CO2eq.','kg CO2eq.','MJ dep.','kg dep.', 'kg NMVOCeq.','kg CFC-11eq.','CTUe','CTUh','CTUh','m3eq.','kg SO2eq.','kg SO2eq.','kg PO4eq.','kg Neq.', 'm2eq.', 'm2eq*yr.', 'kg PM2.5eq.', 'Bq C14eq.']
In [167]:
IWP_end = [m for m in methods if 'IMPACTWorld+ (Default_Recommended_Damage 1.46)' in m[0]]

Data Curation¶

Deterministic results¶

In this section we import the dataframes with deterministic results established in the "Calculation_of_deterministic_results" notebooks

Midpoint¶

opening pickles with deterministic midpoint dataframes

In [168]:
#Typical mission

with open(f"deterministic_midpoint_typ_2030.pkl", "rb") as f:
    var = pickle.load(f)
deterministic_midpoint_typ_2030=var

with open(f"deterministic_midpoint_typ_2040.pkl", "rb") as f:
    var = pickle.load(f)
deterministic_midpoint_typ_2040=var

with open(f"deterministic_midpoint_typ_2050.pkl", "rb") as f:
    var = pickle.load(f)
deterministic_midpoint_typ_2050=var

#Design mission

with open(f"deterministic_midpoint_des_2030.pkl", "rb") as f:
    var = pickle.load(f)
deterministic_midpoint_des_2030=var

with open(f"deterministic_midpoint_des_2040.pkl", "rb") as f:
    var = pickle.load(f)
deterministic_midpoint_des_2040=var

with open(f"deterministic_midpoint_typ_2050.pkl", "rb") as f:
    var = pickle.load(f)
deterministic_midpoint_des_2050=var

Endpoint¶

opening pickles with deterministic endpoint dataframes

In [169]:
#Typical mission

with open(f"deterministic_endpoint_typ_2030.pkl", "rb") as f:
    var = pickle.load(f)
deterministic_endpoint_typ_2030=var

with open(f"deterministic_endpoint_typ_2040.pkl", "rb") as f:
    var = pickle.load(f)
deterministic_endpoint_typ_2040=var

with open(f"deterministic_endpoint_typ_2050.pkl", "rb") as f:
    var = pickle.load(f)
deterministic_endpoint_typ_2050=var

#Design mission

with open(f"deterministic_endpoint_des_2030.pkl", "rb") as f:
    var = pickle.load(f)
deterministic_endpoint_des_2030=var

with open(f"deterministic_endpoint_des_2040.pkl", "rb") as f:
    var = pickle.load(f)
deterministic_endpoint_des_2040=var

with open(f"deterministic_endpoint_des_2050.pkl", "rb") as f:
    var = pickle.load(f)
deterministic_endpoint_des_2050=var

Life cycle stages contribution¶

In [170]:
with open(f"endpoint_stages_contribution_HH_2030.pkl", "rb") as f:
    var = pickle.load(f)
endpoint_stages_contribution_HH_2030=var
endpoint_stages_contribution_HH_2030
endpoint_stages_contribution_HH_2030['H2']=0
endpoint_stages_contribution_HH_2030['Year']='2030'


with open(f"endpoint_stages_contribution_HH_2040.pkl", "rb") as f:
    var = pickle.load(f)
endpoint_stages_contribution_HH_2040=var
endpoint_stages_contribution_HH_2040
endpoint_stages_contribution_HH_2040['Year']='2040'

with open(f"endpoint_stages_contribution_HH_2050.pkl", "rb") as f:
    var = pickle.load(f)
endpoint_stages_contribution_HH_2050=var
endpoint_stages_contribution_HH_2050
endpoint_stages_contribution_HH_2050['Year']='2050'

with open(f"endpoint_stages_contribution_EQ_2030.pkl", "rb") as f:
    var = pickle.load(f)
endpoint_stages_contribution_EQ_2030=var
endpoint_stages_contribution_EQ_2030
endpoint_stages_contribution_EQ_2030['H2']=0
endpoint_stages_contribution_EQ_2030['Year']='2030'


with open(f"endpoint_stages_contribution_EQ_2040.pkl", "rb") as f:
    var = pickle.load(f)
endpoint_stages_contribution_EQ_2040=var
endpoint_stages_contribution_EQ_2040
endpoint_stages_contribution_EQ_2040['Year']='2040'

with open(f"endpoint_stages_contribution_EQ_2050.pkl", "rb") as f:
    var = pickle.load(f)
endpoint_stages_contribution_EQ_2050=var
endpoint_stages_contribution_EQ_2050
endpoint_stages_contribution_EQ_2050['Year']='2050'

Monte Carlo Results¶

In this section we import the results of the Monte Carlo simulations established in the "Calculation_of_probabilistic_results" notebooks, and rearange them into dataframes

Function definitions¶

creating functions that rearange Monte Carlo results into dataframes

In [171]:
def Monte_Carlo_dataframing(names_year, df_results,i,j,a,b,level,n_iterations):

    for k in range(len(names_year)):
        name_split = str(list(names_year.keys())[k]).split('_')
        #Mission
        df_results.loc[a:b, "Mission"]=name_split[0]
        #Configuration
        df_results.loc[a:b, "Configuration"]=name_split[1]
        #Fuel
        df_results.loc[a:b, "Fuel"]=name_split[2]
        #Scenario
        df_results.loc[a:b, "Scenario"]=name_split[3]
        #Year
        df_results.loc[a:b, "Year"]=name_split[4]
        
        #Impact Level 
        #Midpoint
        if level =='midpoint':
            # 18 categories so 18*n_iteration results
            T=(18*n_iterations)-1
          #Categories and Units
            for u in range(18):
                df_results.loc[i:j, "Unit"]=units_IWP_mid[u]
                df_results.loc[i:j, "Category"]=str(IWP_mid[u][1])
                df_results.loc[i:j, "Impact Level"]='Midpoint'
                i=j+1
                j=i+(n_iterations-1)
                
        #Endpoint    
        if level=='endpoint':
            # 27 categories so 27*n_iteration results
            T=27*n_iterations-1
            #Categories
            for v in range(27):
                df_results.loc[i:j, "Category"]=str(IWP_end[v][1])
                df_results.loc[i:j, "Impact Level"]='Endpoint'

                #Units
                if df_results.loc[i:j, "Category"].isin(['Climate change, human health, short term', "Climate change, human health, long term", 'Water availability, human health', 'Photochemical oxidant formation', 'Ionizing radiation, human health', 'Ozone layer depletion', 'Human toxicity cancer, short term', 'Human toxicity cancer, long term', 'Human toxicity non-cancer, short term', 'Human toxicity non-cancer, long term', 'Particulate matter formation']).sum():
                    df_results.loc[i:j, "Unit"]='DALY'       
                else:
                    df_results.loc[i:j, "Unit"]='PDF*m2*year'
                i=j+1
                j=i+(n_iterations-1)
        
        #Values
        df_results.loc[a:b, "Value"]=np.reshape(names_year[list(names_year.keys())[k]],(T+1))
        a=b+1
        b=a+T


    return i,j,a,b
    
       
In [172]:
#summing function for short term damages endpoint

def Monte_Carlo_endpoint_damage_sums_ST(MC_result_aircraft_endpoint, name, n_iterations):
    endpoint= pd.DataFrame(index=[index[1] for index in IWP_end], columns=range(n_iterations))
    endpoint.loc[:]=MC_result_aircraft_endpoint

    cols_HH_ST = ["Climate change, human health, short term",'Water availability, human health','Photochemical oxidant formation','Ionizing radiation, human health','Ozone layer depletion','Human toxicity cancer, short term','Human toxicity non-cancer, short term','Particulate matter formation']
    cols_EQ_ST =['Climate change, ecosystem quality, short term','Marine acidification, short term','Land occupation, biodiversity','Water availability, freshwater ecosystem','Water availability, terrestrial ecosystem','Thermally polluted water','Freshwater ecotoxicity, short term','Freshwater acidification','Terrestrial acidification','Freshwater eutrophication','Marine eutrophication','Land transformation, biodiversity','Ionizing radiation, ecosystem quality']    #11 categories in HH
    
    # HH categories
    endpoint_sum_HH=endpoint.loc[cols_HH_ST]
    endpoint_sum_HH

    #16 categories in EQ
    endpoint_sum_EQ=endpoint.loc[cols_EQ_ST]
    endpoint_sum_EQ

    sum_EQ=endpoint_sum_EQ.sum(0)
    sum_HH=endpoint_sum_HH.sum(0)
    
    #pd.DataFrame([sum_EQ, sum_HH], columns=["EQ", "HH"])
    df = pd.DataFrame(sum_EQ, columns=["EQ"]).join(sum_HH.rename("HH")).melt(var_name="Damage", value_name="Value")
    df["Configuration"] = name
    return df


 

Pickle import¶

Midpoint¶
Typical Mission¶
In [173]:
#opening pickeled MC results for 2030 typical

with open(f"MC_typical_midpoint_2030.pkl", "rb") as f:
    var_typical_midpoint_2030 = pickle.load(f)
r_typ_aircraft_conv_kero_NDC_2030,r_typ_aircraft_conv_kero_Base_2030,r_typ_aircraft_conv_kero_PkBudg500_2030,r_typ_aircraft_GT_bat_kero_NDC_2030, r_typ_aircraft_GT_bat_kero_Base_2030,r_typ_aircraft_GT_bat_kero_PkBudg500_2030,r_typ_aircraft_conv_AAF_NDC_2030,r_typ_aircraft_conv_AAF_Base_2030,r_typ_aircraft_conv_AAF_PkBudg500_2030,r_typ_aircraft_GT_bat_AAF_NDC_2030,r_typ_aircraft_GT_bat_AAF_Base_2030,r_typ_aircraft_GT_bat_AAF_PkBudg500_2030,r_typ_aircraft_conv_ILUC_NDC_2030,r_typ_aircraft_GT_bat_ILUC_NDC_2030= var_typical_midpoint_2030

names_typ_midpoint_2030={'typical_conventional_kerosene_NDC_2030':r_typ_aircraft_conv_kero_NDC_2030,
            'typical_conventional_kerosene_Base_2030':r_typ_aircraft_conv_kero_Base_2030,
            'typical_conventional_kerosene_PkBudg500_2030':r_typ_aircraft_conv_kero_PkBudg500_2030,
            'typical_GTbat_kerosene_NDC_2030':r_typ_aircraft_GT_bat_kero_NDC_2030,
            'typical_GTbat_kerosene_Base_2030':r_typ_aircraft_GT_bat_kero_Base_2030,
            'typical_GTbat_kerosene_PkBudg500_2030':r_typ_aircraft_GT_bat_kero_PkBudg500_2030,
            'typical_conventional_AAF_NDC_2030':r_typ_aircraft_conv_AAF_NDC_2030,
            'typical_conventional_AAF_Base_2030':r_typ_aircraft_conv_AAF_Base_2030,
            'typical_conventional_AAF_PkBudg500_2030':r_typ_aircraft_conv_AAF_PkBudg500_2030,
            'typical_GTbat_AAF_NDC_2030':r_typ_aircraft_GT_bat_AAF_NDC_2030,
            'typical_GTbat_AAF_Base_2030':r_typ_aircraft_GT_bat_AAF_Base_2030,
            'typical_GTbat_AAF_PkBudg500_2030':r_typ_aircraft_GT_bat_AAF_PkBudg500_2030,
            'typical_conventional_ILUC_NDC_2030':r_typ_aircraft_conv_ILUC_NDC_2030,
            'typical_GTbat_ILUC_NDC_2030':r_typ_aircraft_GT_bat_ILUC_NDC_2030}
In [174]:
#opening pickeled MC results for 2040 typical

with open(f"MC_typical_midpoint_2040.pkl", "rb") as f:
    var_typical_midpoint_2040 = pickle.load(f)
r_typ_aircraft_conv_kero_NDC_2040,r_typ_aircraft_conv_kero_Base_2040,r_typ_aircraft_conv_kero_PkBudg500_2040,r_typ_aircraft_GT_bat_kero_NDC_2040,r_typ_aircraft_GT_bat_kero_Base_2040,r_typ_aircraft_GT_bat_kero_PkBudg500_2040,r_typ_aircraft_conv_AAF_NDC_2040,r_typ_aircraft_conv_AAF_Base_2040,r_typ_aircraft_conv_AAF_PkBudg500_2040,r_typ_aircraft_GT_bat_AAF_NDC_2040,r_typ_aircraft_GT_bat_AAF_Base_2040,r_typ_aircraft_GT_bat_AAF_PkBudg500_2040,r_typ_aircraft_PEMFC_bat_NDC_2040,r_typ_aircraft_PEMFC_bat_Base_2040,r_typ_aircraft_PEMFC_bat_PkBudg500_2040,r_typ_aircraft_conv_ILUC_NDC_2040,r_typ_aircraft_GT_bat_ILUC_NDC_2040= var_typical_midpoint_2040

names_typ_midpoint_2040={'typical_conventional_kerosene_NDC_2040':r_typ_aircraft_conv_kero_NDC_2040,
            'typical_conventional_kerosene_Base_2040':r_typ_aircraft_conv_kero_Base_2040,
            'typical_conventional_kerosene_PkBudg500_2040':r_typ_aircraft_conv_kero_PkBudg500_2040,
            'typical_GTbat_kerosene_NDC_2040':r_typ_aircraft_GT_bat_kero_NDC_2040,
            'typical_GTbat_kerosene_Base_2040':r_typ_aircraft_GT_bat_kero_Base_2040,
            'typical_GTbat_kerosene_PkBudg500_2040':r_typ_aircraft_GT_bat_kero_PkBudg500_2040,
            'typical_conventional_AAF_NDC_2040':r_typ_aircraft_conv_AAF_NDC_2040,
            'typical_conventional_AAF_Base_2040':r_typ_aircraft_conv_AAF_Base_2040,
            'typical_conventional_AAF_PkBudg500_2040':r_typ_aircraft_conv_AAF_PkBudg500_2040,
            'typical_GTbat_AAF_NDC_2040':r_typ_aircraft_GT_bat_AAF_NDC_2040,
            'typical_GTbat_AAF_Base_2040':r_typ_aircraft_GT_bat_AAF_Base_2040,
            'typical_GTbat_AAF_PkBudg500_2040':r_typ_aircraft_GT_bat_AAF_PkBudg500_2040,
            'typical_PEMFCbat_h2_NDC_2040':r_typ_aircraft_PEMFC_bat_NDC_2040,
            'typical_PEMFCbat_h2_Base_2040':r_typ_aircraft_PEMFC_bat_Base_2040,
            'typical_PEMFCbat_h2_PkBudg500_2040':r_typ_aircraft_PEMFC_bat_PkBudg500_2040,
            'typical_conventional_ILUC_NDC_2040':r_typ_aircraft_conv_ILUC_NDC_2040,
            'typical_GTbat_ILUC_NDC_2040':r_typ_aircraft_GT_bat_ILUC_NDC_2040}
In [175]:
#opening pickeled MC results for 2050 typical
with open(f"MC_typical_midpoint_2050.pkl", "rb") as f:
        var_typical_midpoint_2050 = pickle.load(f)
r_typ_aircraft_conv_kero_NDC_2050,r_typ_aircraft_conv_kero_Base_2050,r_typ_aircraft_conv_kero_PkBudg500_2050,r_typ_aircraft_conv_AAF_NDC_2050,r_typ_aircraft_conv_AAF_Base_2050,r_typ_aircraft_conv_AAF_PkBudg500_2050,r_typ_aircraft_PEMFC_bat_NDC_2050,r_typ_aircraft_PEMFC_bat_Base_2050,r_typ_aircraft_PEMFC_bat_PkBudg500_2050,r_typ_aircraft_SOFC_bat_NDC_2050,r_typ_aircraft_SOFC_bat_Base_2050,r_typ_aircraft_SOFC_bat_PkBudg500_2050,r_typ_aircraft_conv_ILUC_NDC_2050=var_typical_midpoint_2050

names_typ_midpoint_2050={'typical_conventional_kerosene_NDC_2050':r_typ_aircraft_conv_kero_NDC_2050,
            'typical_conventional_kerosene_Base_2050':r_typ_aircraft_conv_kero_Base_2050,
            'typical_conventional_kerosene_PkBudg500_2050':r_typ_aircraft_conv_kero_PkBudg500_2050,
            'typical_conventional_AAF_NDC_2050':r_typ_aircraft_conv_AAF_NDC_2050,
            'typical_conventional_AAF_Base_2050':r_typ_aircraft_conv_AAF_Base_2050,
            'typical_conventional_AAF_PkBudg500_2050':r_typ_aircraft_conv_AAF_PkBudg500_2050,
            'typical_PEMFCbat_h2_NDC_2050':r_typ_aircraft_PEMFC_bat_NDC_2050,
            'typical_PEMFCbat_h2_Base_2050':r_typ_aircraft_PEMFC_bat_Base_2050,
            'typical_PEMFCbat_h2_PkBudg500_2050':r_typ_aircraft_PEMFC_bat_PkBudg500_2050,
            'typical_SOFCbat_h2_NDC_2050':r_typ_aircraft_SOFC_bat_NDC_2050,
            'typical_SOFCbat_h2_Base_2050':r_typ_aircraft_SOFC_bat_Base_2050,
            'typical_SOFCbat_h2_PkBudg500_2050':r_typ_aircraft_SOFC_bat_PkBudg500_2050,
            'typical_conventional_ILUC_NDC_2050':r_typ_aircraft_conv_ILUC_NDC_2050,}
Design mission¶
In [176]:
#opening pickeled MC results for 2030 design

with open(f"MC_design_midpoint_2030.pkl", "rb") as f:
    var_design_midpoint_2030 = pickle.load(f)
r_des_aircraft_conv_kero_NDC_2030,r_des_aircraft_conv_kero_Base_2030,r_des_aircraft_conv_kero_PkBudg500_2030,r_des_aircraft_GT_bat_kero_NDC_2030, r_des_aircraft_GT_bat_kero_Base_2030,r_des_aircraft_GT_bat_kero_PkBudg500_2030,r_des_aircraft_conv_AAF_NDC_2030,r_des_aircraft_conv_AAF_Base_2030,r_des_aircraft_conv_AAF_PkBudg500_2030,r_des_aircraft_GT_bat_AAF_NDC_2030,r_des_aircraft_GT_bat_AAF_Base_2030,r_des_aircraft_GT_bat_AAF_PkBudg500_2030,r_des_aircraft_conv_ILUC_NDC_2030,r_des_aircraft_GT_bat_ILUC_NDC_2030= var_design_midpoint_2030

names_des_midpoint_2030={'design_conventional_kerosene_NDC_2030':r_des_aircraft_conv_kero_NDC_2030,
            'design_conventional_kerosene_Base_2030':r_des_aircraft_conv_kero_Base_2030,
            'design_conventional_kerosene_PkBudg500_2030':r_des_aircraft_conv_kero_PkBudg500_2030,
            'design_GTbat_kerosene_NDC_2030':r_des_aircraft_GT_bat_kero_NDC_2030,
            'design_GTbat_kerosene_Base_2030':r_des_aircraft_GT_bat_kero_Base_2030,
            'design_GTbat_kerosene_PkBudg500_2030':r_des_aircraft_GT_bat_kero_PkBudg500_2030,
            'design_conventional_AAF_NDC_2030':r_des_aircraft_conv_AAF_NDC_2030,
            'design_conventional_AAF_Base_2030':r_des_aircraft_conv_AAF_Base_2030,
            'design_conventional_AAF_PkBudg500_2030':r_des_aircraft_conv_AAF_PkBudg500_2030,
            'design_GTbat_AAF_NDC_2030':r_des_aircraft_GT_bat_AAF_NDC_2030,
            'design_GTbat_AAF_Base_2030':r_des_aircraft_GT_bat_AAF_Base_2030,
            'design_GTbat_AAF_PkBudg500_2030':r_des_aircraft_GT_bat_AAF_PkBudg500_2030,
            'design_conventional_ILUC_NDC_2030':r_des_aircraft_conv_ILUC_NDC_2030,
            'design_GTbat_ILUC_NDC_2030':r_des_aircraft_GT_bat_ILUC_NDC_2030}
In [177]:
#opening pickeled MC results for 2040 design

with open(f"MC_design_midpoint_2040.pkl", "rb") as f:
    var_design_midpoint_2040 = pickle.load(f)
r_des_aircraft_conv_kero_NDC_2040,r_des_aircraft_conv_kero_Base_2040,r_des_aircraft_conv_kero_PkBudg500_2040,r_des_aircraft_GT_bat_kero_NDC_2040,r_des_aircraft_GT_bat_kero_Base_2040,r_des_aircraft_GT_bat_kero_PkBudg500_2040,r_des_aircraft_conv_AAF_NDC_2040,r_des_aircraft_conv_AAF_Base_2040,r_des_aircraft_conv_AAF_PkBudg500_2040,r_des_aircraft_GT_bat_AAF_NDC_2040,r_des_aircraft_GT_bat_AAF_Base_2040,r_des_aircraft_GT_bat_AAF_PkBudg500_2040,r_des_aircraft_PEMFC_bat_NDC_2040,r_des_aircraft_PEMFC_bat_Base_2040,r_des_aircraft_PEMFC_bat_PkBudg500_2040,r_des_aircraft_conv_ILUC_NDC_2040,r_des_aircraft_GT_bat_ILUC_NDC_2040= var_design_midpoint_2040

names_des_midpoint_2040={'design_conventional_kerosene_NDC_2040':r_des_aircraft_conv_kero_NDC_2040,
            'design_conventional_kerosene_Base_2040':r_des_aircraft_conv_kero_Base_2040,
            'design_conventional_kerosene_PkBudg500_2040':r_des_aircraft_conv_kero_PkBudg500_2040,
            'design_GTbat_kerosene_NDC_2040':r_des_aircraft_GT_bat_kero_NDC_2040,
            'design_GTbat_kerosene_Base_2040':r_des_aircraft_GT_bat_kero_Base_2040,
            'design_GTbat_kerosene_PkBudg500_2040':r_des_aircraft_GT_bat_kero_PkBudg500_2040,
            'design_conventional_AAF_NDC_2040':r_des_aircraft_conv_AAF_NDC_2040,
            'design_conventional_AAF_Base_2040':r_des_aircraft_conv_AAF_Base_2040,
            'design_conventional_AAF_PkBudg500_2040':r_des_aircraft_conv_AAF_PkBudg500_2040,
            'design_GTbat_AAF_NDC_2040':r_des_aircraft_GT_bat_AAF_NDC_2040,
            'design_GTbat_AAF_Base_2040':r_des_aircraft_GT_bat_AAF_Base_2040,
            'design_GTbat_AAF_PkBudg500_2040':r_des_aircraft_GT_bat_AAF_PkBudg500_2040,
            'design_PEMFCbat_h2_NDC_2040':r_des_aircraft_PEMFC_bat_NDC_2040,
            'design_PEMFCbat_h2_Base_2040':r_des_aircraft_PEMFC_bat_Base_2040,
            'design_PEMFCbat_h2_PkBudg500_2040':r_des_aircraft_PEMFC_bat_PkBudg500_2040,
            'design_conventional_ILUC_NDC_2040':r_des_aircraft_conv_ILUC_NDC_2040,
            'design_GTbat_ILUC_NDC_2040':r_des_aircraft_GT_bat_ILUC_NDC_2040}
In [178]:
#opening pickeled MC results for 2050 design
with open(f"MC_design_midpoint_2050.pkl", "rb") as f:
        var_design_midpoint_2050 = pickle.load(f)
r_des_aircraft_conv_kero_NDC_2050,r_des_aircraft_conv_kero_Base_2050,r_des_aircraft_conv_kero_PkBudg500_2050,r_des_aircraft_conv_AAF_NDC_2050,r_des_aircraft_conv_AAF_Base_2050,r_des_aircraft_conv_AAF_PkBudg500_2050,r_des_aircraft_PEMFC_bat_NDC_2050,r_des_aircraft_PEMFC_bat_Base_2050,r_des_aircraft_PEMFC_bat_PkBudg500_2050,r_des_aircraft_SOFC_bat_NDC_2050,r_des_aircraft_SOFC_bat_Base_2050,r_des_aircraft_SOFC_bat_PkBudg500_2050,r_des_aircraft_conv_ILUC_NDC_2050=var_design_midpoint_2050

names_des_midpoint_2050={'design_conventional_kerosene_NDC_2050':r_des_aircraft_conv_kero_NDC_2050,
            'design_conventional_kerosene_Base_2050':r_des_aircraft_conv_kero_Base_2050,
            'design_conventional_kerosene_PkBudg500_2050':r_des_aircraft_conv_kero_PkBudg500_2050,
            'design_conventional_AAF_NDC_2050':r_des_aircraft_conv_AAF_NDC_2050,
            'design_conventional_AAF_Base_2050':r_des_aircraft_conv_AAF_Base_2050,
            'design_conventional_AAF_PkBudg500_2050':r_des_aircraft_conv_AAF_PkBudg500_2050,
            'design_PEMFCbat_h2_NDC_2050':r_des_aircraft_PEMFC_bat_NDC_2050,
            'design_PEMFCbat_h2_Base_2050':r_des_aircraft_PEMFC_bat_Base_2050,
            'design_PEMFCbat_h2_PkBudg500_2050':r_des_aircraft_PEMFC_bat_PkBudg500_2050,
            'design_SOFCbat_h2_NDC_2050':r_des_aircraft_SOFC_bat_NDC_2050,
            'design_SOFCbat_h2_Base_2050':r_des_aircraft_SOFC_bat_Base_2050,
            'design_SOFCbat_h2_PkBudg500_2050':r_des_aircraft_SOFC_bat_PkBudg500_2050,
            'design_conventional_ILUC_NDC_2050':r_des_aircraft_conv_ILUC_NDC_2050}
Endpoint¶
Typical mission¶
In [179]:
#opening pickeled MC results for 2030 typical Endpoint

with open(f"MC_typical_endpoint_2030.pkl", "rb") as f:
    var_typical_endpoint_2030 = pickle.load(f)
r_typ_aircraft_conv_kero_NDC_2030,r_typ_aircraft_conv_kero_Base_2030,r_typ_aircraft_conv_kero_PkBudg500_2030,r_typ_aircraft_GT_bat_kero_NDC_2030, r_typ_aircraft_GT_bat_kero_Base_2030,r_typ_aircraft_GT_bat_kero_PkBudg500_2030,r_typ_aircraft_conv_AAF_NDC_2030,r_typ_aircraft_conv_AAF_Base_2030,r_typ_aircraft_conv_AAF_PkBudg500_2030,r_typ_aircraft_GT_bat_AAF_NDC_2030,r_typ_aircraft_GT_bat_AAF_Base_2030,r_typ_aircraft_GT_bat_AAF_PkBudg500_2030,r_typ_aircraft_conv_ILUC_NDC_2030,r_typ_aircraft_GT_bat_ILUC_NDC_2030= var_typical_endpoint_2030

names_typ_endpoint_2030={'typical_conventional_kerosene_NDC_2030':r_typ_aircraft_conv_kero_NDC_2030,
            'typical_conventional_kerosene_Base_2030':r_typ_aircraft_conv_kero_Base_2030,
            'typical_conventional_kerosene_PkBudg500_2030':r_typ_aircraft_conv_kero_PkBudg500_2030,
            'typical_GTbat_kerosene_NDC_2030':r_typ_aircraft_GT_bat_kero_NDC_2030,
            'typical_GTbat_kerosene_Base_2030':r_typ_aircraft_GT_bat_kero_Base_2030,
            'typical_GTbat_kerosene_PkBudg500_2030':r_typ_aircraft_GT_bat_kero_PkBudg500_2030,
            'typical_conventional_AAF_NDC_2030':r_typ_aircraft_conv_AAF_NDC_2030,
            'typical_conventional_AAF_Base_2030':r_typ_aircraft_conv_AAF_Base_2030,
            'typical_conventional_AAF_PkBudg500_2030':r_typ_aircraft_conv_AAF_PkBudg500_2030,
            'typical_GTbat_AAF_NDC_2030':r_typ_aircraft_GT_bat_AAF_NDC_2030,
            'typical_GTbat_AAF_Base_2030':r_typ_aircraft_GT_bat_AAF_Base_2030,
            'typical_GTbat_AAF_PkBudg500_2030':r_typ_aircraft_GT_bat_AAF_PkBudg500_2030,
            'typical_conventional_ILUC_NDC_2030':r_typ_aircraft_conv_ILUC_NDC_2030,
            'typical_GTbat_ILUC_NDC_2030':r_typ_aircraft_GT_bat_ILUC_NDC_2030}
In [180]:
#opening pickeled MC results for 2040 typical

with open(f"MC_typical_endpoint_2040.pkl", "rb") as f:
    var_typical_endpoint_2040 = pickle.load(f)
r_typ_aircraft_conv_kero_NDC_2040,r_typ_aircraft_conv_kero_Base_2040,r_typ_aircraft_conv_kero_PkBudg500_2040,r_typ_aircraft_GT_bat_kero_NDC_2040,r_typ_aircraft_GT_bat_kero_Base_2040,r_typ_aircraft_GT_bat_kero_PkBudg500_2040,r_typ_aircraft_conv_AAF_NDC_2040,r_typ_aircraft_conv_AAF_Base_2040,r_typ_aircraft_conv_AAF_PkBudg500_2040,r_typ_aircraft_GT_bat_AAF_NDC_2040,r_typ_aircraft_GT_bat_AAF_Base_2040,r_typ_aircraft_GT_bat_AAF_PkBudg500_2040,r_typ_aircraft_PEMFC_bat_NDC_2040,r_typ_aircraft_PEMFC_bat_Base_2040,r_typ_aircraft_PEMFC_bat_PkBudg500_2040,r_typ_aircraft_conv_ILUC_NDC_2040,r_typ_aircraft_GT_bat_ILUC_NDC_2040= var_typical_endpoint_2040

names_typ_endpoint_2040={'typical_conventional_kerosene_NDC_2040':r_typ_aircraft_conv_kero_NDC_2040,
                'typical_conventional_kerosene_Base_2040':r_typ_aircraft_conv_kero_Base_2040,
                'typical_conventional_kerosene_PkBudg500_2040':r_typ_aircraft_conv_kero_PkBudg500_2040,
                'typical_GTbat_kerosene_NDC_2040':r_typ_aircraft_GT_bat_kero_NDC_2040,
                'typical_GTbat_kerosene_Base_2040':r_typ_aircraft_GT_bat_kero_Base_2040,
                'typical_GTbat_kerosene_PkBudg500_2040':r_typ_aircraft_GT_bat_kero_PkBudg500_2040,
                'typical_conventional_AAF_NDC_2040':r_typ_aircraft_conv_AAF_NDC_2040,
                'typical_conventional_AAF_Base_2040':r_typ_aircraft_conv_AAF_Base_2040,
                'typical_conventional_AAF_PkBudg500_2040':r_typ_aircraft_conv_AAF_PkBudg500_2040,
                'typical_GTbat_AAF_NDC_2040':r_typ_aircraft_GT_bat_AAF_NDC_2040,
                'typical_GTbat_AAF_Base_2040':r_typ_aircraft_GT_bat_AAF_Base_2040,
                'typical_GTbat_AAF_PkBudg500_2040':r_typ_aircraft_GT_bat_AAF_PkBudg500_2040,
                'typical_PEMFCbat_h2_NDC_2040':r_typ_aircraft_PEMFC_bat_NDC_2040,
                'typical_PEMFCbat_h2_Base_2040':r_typ_aircraft_PEMFC_bat_Base_2040,
                'typical_PEMFCbat_h2_PkBudg500_2040':r_typ_aircraft_PEMFC_bat_PkBudg500_2040,
                'typical_conventional_ILUC_NDC_2040':r_typ_aircraft_conv_ILUC_NDC_2040,
                'typical_GTbat_ILUC_NDC_2040':r_typ_aircraft_GT_bat_ILUC_NDC_2040}
In [181]:
#opening pickeled MC results for 2050 typical
with open(f"MC_typical_endpoint_2050.pkl", "rb") as f:
        var_typical_endpoint_2050 = pickle.load(f)
r_typ_aircraft_conv_kero_NDC_2050,r_typ_aircraft_conv_kero_Base_2050,r_typ_aircraft_conv_kero_PkBudg500_2050,r_typ_aircraft_conv_AAF_NDC_2050,r_typ_aircraft_conv_AAF_Base_2050,r_typ_aircraft_conv_AAF_PkBudg500_2050,r_typ_aircraft_PEMFC_bat_NDC_2050,r_typ_aircraft_PEMFC_bat_Base_2050,r_typ_aircraft_PEMFC_bat_PkBudg500_2050,r_typ_aircraft_SOFC_bat_NDC_2050,r_typ_aircraft_SOFC_bat_Base_2050,r_typ_aircraft_SOFC_bat_PkBudg500_2050,r_typ_aircraft_conv_ILUC_NDC_2050=var_typical_endpoint_2050

names_typ_endpoint_2050={'typical_conventional_kerosene_NDC_2050':r_typ_aircraft_conv_kero_NDC_2050,
            'typical_conventional_kerosene_Base_2050':r_typ_aircraft_conv_kero_Base_2050,
            'typical_conventional_kerosene_PkBudg500_2050':r_typ_aircraft_conv_kero_PkBudg500_2050,
            'typical_conventional_AAF_NDC_2050':r_typ_aircraft_conv_AAF_NDC_2050,
            'typical_conventional_AAF_Base_2050':r_typ_aircraft_conv_AAF_Base_2050,
            'typical_conventional_AAF_PkBudg500_2050':r_typ_aircraft_conv_AAF_PkBudg500_2050,
            'typical_PEMFCbat_h2_NDC_2050':r_typ_aircraft_PEMFC_bat_NDC_2050,
            'typical_PEMFCbat_h2_Base_2050':r_typ_aircraft_PEMFC_bat_Base_2050,
            'typical_PEMFCbat_h2_PkBudg500_2050':r_typ_aircraft_PEMFC_bat_PkBudg500_2050,
            'typical_SOFCbat_h2_NDC_2050':r_typ_aircraft_SOFC_bat_NDC_2050,
            'typical_SOFCbat_h2_Base_2050':r_typ_aircraft_SOFC_bat_Base_2050,
            'typical_SOFCbat_h2_PkBudg500_2050':r_typ_aircraft_SOFC_bat_PkBudg500_2050,
            'typical_conventional_ILUC_NDC_2050':r_typ_aircraft_conv_ILUC_NDC_2050}
Design mission¶
In [182]:
#opening pickeled MC results for 2030 design Endpoint

with open(f"MC_design_endpoint_2030.pkl", "rb") as f:
    var_design_endpoint_2030 = pickle.load(f)
r_des_aircraft_conv_kero_NDC_2030,r_des_aircraft_conv_kero_Base_2030,r_des_aircraft_conv_kero_PkBudg500_2030,r_des_aircraft_GT_bat_kero_NDC_2030, r_des_aircraft_GT_bat_kero_Base_2030,r_des_aircraft_GT_bat_kero_PkBudg500_2030,r_des_aircraft_conv_AAF_NDC_2030,r_des_aircraft_conv_AAF_Base_2030,r_des_aircraft_conv_AAF_PkBudg500_2030,r_des_aircraft_GT_bat_AAF_NDC_2030,r_des_aircraft_GT_bat_AAF_Base_2030,r_des_aircraft_GT_bat_AAF_PkBudg500_2030,r_des_aircraft_conv_ILUC_NDC_2030,r_des_aircraft_GT_bat_ILUC_NDC_2030= var_design_endpoint_2030

names_des_endpoint_2030={'design_conventional_kerosene_NDC_2030':r_des_aircraft_conv_kero_NDC_2030,
            'design_conventional_kerosene_Base_2030':r_des_aircraft_conv_kero_Base_2030,
            'design_conventional_kerosene_PkBudg500_2030':r_des_aircraft_conv_kero_PkBudg500_2030,
            'design_GTbat_kerosene_NDC_2030':r_des_aircraft_GT_bat_kero_NDC_2030,
            'design_GTbat_kerosene_Base_2030':r_des_aircraft_GT_bat_kero_Base_2030,
            'design_GTbat_kerosene_PkBudg500_2030':r_des_aircraft_GT_bat_kero_PkBudg500_2030,
            'design_conventional_AAF_NDC_2030':r_des_aircraft_conv_AAF_NDC_2030,
            'design_conventional_AAF_Base_2030':r_des_aircraft_conv_AAF_Base_2030,
            'design_conventional_AAF_PkBudg500_2030':r_des_aircraft_conv_AAF_PkBudg500_2030,
            'design_GTbat_AAF_NDC_2030':r_des_aircraft_GT_bat_AAF_NDC_2030,
            'design_GTbat_AAF_Base_2030':r_des_aircraft_GT_bat_AAF_Base_2030,
            'design_GTbat_AAF_PkBudg500_2030':r_des_aircraft_GT_bat_AAF_PkBudg500_2030,
            'design_conventional_ILUC_NDC_2030':r_des_aircraft_conv_ILUC_NDC_2030,
            'design_GTbat_ILUC_NDC_2030':r_des_aircraft_GT_bat_ILUC_NDC_2030}
In [183]:
#opening pickeled MC results for 2040 design

with open(f"MC_design_endpoint_2040.pkl", "rb") as f:
    var_design_endpoint_2040 = pickle.load(f)
r_des_aircraft_conv_kero_NDC_2040,r_des_aircraft_conv_kero_Base_2040,r_des_aircraft_conv_kero_PkBudg500_2040,r_des_aircraft_GT_bat_kero_NDC_2040,r_des_aircraft_GT_bat_kero_Base_2040,r_des_aircraft_GT_bat_kero_PkBudg500_2040,r_des_aircraft_conv_AAF_NDC_2040,r_des_aircraft_conv_AAF_Base_2040,r_des_aircraft_conv_AAF_PkBudg500_2040,r_des_aircraft_GT_bat_AAF_NDC_2040,r_des_aircraft_GT_bat_AAF_Base_2040,r_des_aircraft_GT_bat_AAF_PkBudg500_2040,r_des_aircraft_PEMFC_bat_NDC_2040,r_des_aircraft_PEMFC_bat_Base_2040,r_des_aircraft_PEMFC_bat_PkBudg500_2040,r_des_aircraft_conv_ILUC_NDC_2040,r_des_aircraft_GT_bat_ILUC_NDC_2040= var_design_endpoint_2040

names_des_endpoint_2040={'design_conventional_kerosene_NDC_2040':r_des_aircraft_conv_kero_NDC_2040,
                'design_conventional_kerosene_Base_2040':r_des_aircraft_conv_kero_Base_2040,
                'design_conventional_kerosene_PkBudg500_2040':r_des_aircraft_conv_kero_PkBudg500_2040,
                'design_GTbat_kerosene_NDC_2040':r_des_aircraft_GT_bat_kero_NDC_2040,
                'design_GTbat_kerosene_Base_2040':r_des_aircraft_GT_bat_kero_Base_2040,
                'design_GTbat_kerosene_PkBudg500_2040':r_des_aircraft_GT_bat_kero_PkBudg500_2040,
                'design_conventional_AAF_NDC_2040':r_des_aircraft_conv_AAF_NDC_2040,
                'design_conventional_AAF_Base_2040':r_des_aircraft_conv_AAF_Base_2040,
                'design_conventional_AAF_PkBudg500_2040':r_des_aircraft_conv_AAF_PkBudg500_2040,
                'design_GTbat_AAF_NDC_2040':r_des_aircraft_GT_bat_AAF_NDC_2040,
                'design_GTbat_AAF_Base_2040':r_des_aircraft_GT_bat_AAF_Base_2040,
                'design_GTbat_AAF_PkBudg500_2040':r_des_aircraft_GT_bat_AAF_PkBudg500_2040,
                'design_PEMFCbat_h2_NDC_2040':r_des_aircraft_PEMFC_bat_NDC_2040,
                'design_PEMFCbat_h2_Base_2040':r_des_aircraft_PEMFC_bat_Base_2040,
                'design_PEMFCbat_h2_PkBudg500_2040':r_des_aircraft_PEMFC_bat_PkBudg500_2040,
                'design_conventional_ILUC_NDC_2040':r_des_aircraft_conv_ILUC_NDC_2040,
                'design_GTbat_ILUC_NDC_2040':r_des_aircraft_GT_bat_ILUC_NDC_2040}
                        
In [184]:
#opening pickeled MC results for 2050 design
with open(f"MC_design_endpoint_2050.pkl", "rb") as f:
        var_design_endpoint_2050 = pickle.load(f)
r_des_aircraft_conv_kero_NDC_2050,r_des_aircraft_conv_kero_Base_2050,r_des_aircraft_conv_kero_PkBudg500_2050,r_des_aircraft_conv_AAF_NDC_2050,r_des_aircraft_conv_AAF_Base_2050,r_des_aircraft_conv_AAF_PkBudg500_2050,r_des_aircraft_PEMFC_bat_NDC_2050,r_des_aircraft_PEMFC_bat_Base_2050,r_des_aircraft_PEMFC_bat_PkBudg500_2050,r_des_aircraft_SOFC_bat_NDC_2050,r_des_aircraft_SOFC_bat_Base_2050,r_des_aircraft_SOFC_bat_PkBudg500_2050,r_des_aircraft_conv_ILUC_NDC_2050=var_design_endpoint_2050

names_des_endpoint_2050={'design_conventional_kerosene_NDC_2050':r_des_aircraft_conv_kero_NDC_2050,
            'design_conventional_kerosene_Base_2050':r_des_aircraft_conv_kero_Base_2050,
            'design_conventional_kerosene_PkBudg500_2050':r_des_aircraft_conv_kero_PkBudg500_2050,
            'design_conventional_AAF_NDC_2050':r_des_aircraft_conv_AAF_NDC_2050,
            'design_conventional_AAF_Base_2050':r_des_aircraft_conv_AAF_Base_2050,
            'design_conventional_AAF_PkBudg500_2050':r_des_aircraft_conv_AAF_PkBudg500_2050,
            'design_PEMFCbat_h2_NDC_2050':r_des_aircraft_PEMFC_bat_NDC_2050,
            'design_PEMFCbat_h2_Base_2050':r_des_aircraft_PEMFC_bat_Base_2050,
            'design_PEMFCbat_h2_PkBudg500_2050':r_des_aircraft_PEMFC_bat_PkBudg500_2050,
            'design_SOFCbat_h2_NDC_2050':r_des_aircraft_SOFC_bat_NDC_2050,
            'design_SOFCbat_h2_Base_2050':r_des_aircraft_SOFC_bat_Base_2050,
            'design_SOFCbat_h2_PkBudg500_2050':r_des_aircraft_SOFC_bat_PkBudg500_2050,
            'design_conventional_ILUC_NDC_2050':r_des_aircraft_conv_ILUC_NDC_2050}

Dataframes¶

Midpoint¶
In [185]:
#initialising empty DF

n_config=+len(var_typical_midpoint_2030)+len(var_typical_midpoint_2040)+len(var_typical_midpoint_2050)+len(var_design_midpoint_2030)+len(var_design_midpoint_2040)+len(var_design_midpoint_2050)
MC_results_Midpoint= pd.DataFrame(index=range(18*500*n_config),columns=['Year','Mission','Configuration','Fuel','Scenario','Impact Level', 'Category','Value', 'Unit'])
In [186]:
# using the function defined above to provide a dataframe with midpoint results

i,j,a,b= Monte_Carlo_dataframing(names_typ_midpoint_2030,MC_results_Midpoint,0,499,0,18*500-1,'midpoint',500)
i,j,a,b= Monte_Carlo_dataframing(names_typ_midpoint_2040,MC_results_Midpoint,i,j,a,b,'midpoint',500)
i,j,a,b= Monte_Carlo_dataframing(names_typ_midpoint_2050,MC_results_Midpoint,i,j,a,b,'midpoint',500)
i,j,a,b= Monte_Carlo_dataframing(names_des_midpoint_2030,MC_results_Midpoint,i,j,a,b,'midpoint',500)
i,j,a,b= Monte_Carlo_dataframing(names_des_midpoint_2040,MC_results_Midpoint,i,j,a,b,'midpoint',500)
i,j,a,b= Monte_Carlo_dataframing(names_des_midpoint_2050,MC_results_Midpoint,i,j,a,b,'midpoint',500)

MC_results_Midpoint=MC_results_Midpoint.replace(['typical'],'Typical')
MC_results_Midpoint=MC_results_Midpoint.replace(['design'],'Design')
MC_results_Midpoint=MC_results_Midpoint.replace(['typical'],'Typical')
MC_results_Midpoint=MC_results_Midpoint.replace(['conventional'],'Conventional')
MC_results_Midpoint=MC_results_Midpoint.replace(['GTbat'],'GT-bat')
MC_results_Midpoint=MC_results_Midpoint.replace(['PEMFCbat'],'PEMFC-bat')
MC_results_Midpoint=MC_results_Midpoint.replace(['SOFCbat'],'SOFC-bat')
MC_results_Midpoint=MC_results_Midpoint.replace(['kerosene'],'Kerosene')
MC_results_Midpoint=MC_results_Midpoint.replace(['midpoint'],'Midpoint')
MC_results_Midpoint=MC_results_Midpoint.replace(['h2'],'H2')
MC_results_Midpoint
Out[186]:
Year Mission Configuration Fuel Scenario Impact Level Category Value Unit
0 2030 Typical Conventional Kerosene NDC Midpoint Climate change, short term 1958.098319 kg CO2eq.
1 2030 Typical Conventional Kerosene NDC Midpoint Climate change, short term 1862.055026 kg CO2eq.
2 2030 Typical Conventional Kerosene NDC Midpoint Climate change, short term 1788.645990 kg CO2eq.
3 2030 Typical Conventional Kerosene NDC Midpoint Climate change, short term 1880.183990 kg CO2eq.
4 2030 Typical Conventional Kerosene NDC Midpoint Climate change, short term 1781.427353 kg CO2eq.
... ... ... ... ... ... ... ... ... ...
791995 2050 Design Conventional ILUC NDC Midpoint Ionizing radiations 7489.063927 Bq C14eq.
791996 2050 Design Conventional ILUC NDC Midpoint Ionizing radiations 7541.058077 Bq C14eq.
791997 2050 Design Conventional ILUC NDC Midpoint Ionizing radiations 8196.452982 Bq C14eq.
791998 2050 Design Conventional ILUC NDC Midpoint Ionizing radiations 10695.624471 Bq C14eq.
791999 2050 Design Conventional ILUC NDC Midpoint Ionizing radiations 7429.042347 Bq C14eq.

792000 rows × 9 columns

Endpoint¶
Damage level¶
In [187]:
#initialising empty DF

n_config=len(var_typical_endpoint_2030)+len(var_typical_endpoint_2040)+len(var_typical_endpoint_2050)+len(var_design_endpoint_2030)+len(var_design_endpoint_2040)+len(var_design_endpoint_2050)
MC_results_Endpoint= pd.DataFrame(index=range(27*500*n_config),columns=['Year','Mission','Configuration','Fuel','Scenario','Impact Level', 'Category','Value', 'Unit'])
In [188]:
# using the function defined above to provide a dataframe with endpoint results

i,j,a,b= Monte_Carlo_dataframing(names_typ_endpoint_2030,MC_results_Endpoint,0,499,0,27*500-1,'endpoint',500)
i,j,a,b= Monte_Carlo_dataframing(names_typ_endpoint_2040,MC_results_Endpoint,i,j,a,b,'endpoint',500)
i,j,a,b= Monte_Carlo_dataframing(names_typ_endpoint_2050,MC_results_Endpoint,i,j,a,b,'endpoint',500)
i,j,a,b= Monte_Carlo_dataframing(names_des_endpoint_2030,MC_results_Endpoint,i,j,a,b,'endpoint',500)
i,j,a,b= Monte_Carlo_dataframing(names_des_endpoint_2040,MC_results_Endpoint,i,j,a,b,'endpoint',500)
i,j,a,b= Monte_Carlo_dataframing(names_des_endpoint_2050,MC_results_Endpoint,i,j,a,b,'endpoint',500)

MC_results_Endpoint=MC_results_Endpoint.replace(['typical'],'Typical')
MC_results_Endpoint=MC_results_Endpoint.replace(['design'],'Design')
MC_results_Endpoint=MC_results_Endpoint.replace(['typical'],'Typical')
MC_results_Endpoint=MC_results_Endpoint.replace(['conventional'],'Conventional')
MC_results_Endpoint=MC_results_Endpoint.replace(['GTbat'],'GT-bat')
MC_results_Endpoint=MC_results_Endpoint.replace(['PEMFCbat'],'PEMFC-bat')
MC_results_Endpoint=MC_results_Endpoint.replace(['SOFCbat'],'SOFC-bat')
MC_results_Endpoint=MC_results_Endpoint.replace(['kerosene'],'Kerosene')
MC_results_Endpoint=MC_results_Endpoint.replace(['h2'],'H2')
MC_results_Endpoint=MC_results_Endpoint.replace(['endpoint'],'Endpoint')
MC_results_Endpoint
Out[188]:
Year Mission Configuration Fuel Scenario Impact Level Category Value Unit
0 2030 Typical Conventional Kerosene NDC Endpoint Climate change, ecosystem quality, short term 3.465578e+02 PDF*m2*year
1 2030 Typical Conventional Kerosene NDC Endpoint Climate change, ecosystem quality, short term 3.295668e+02 PDF*m2*year
2 2030 Typical Conventional Kerosene NDC Endpoint Climate change, ecosystem quality, short term 3.165707e+02 PDF*m2*year
3 2030 Typical Conventional Kerosene NDC Endpoint Climate change, ecosystem quality, short term 3.327703e+02 PDF*m2*year
4 2030 Typical Conventional Kerosene NDC Endpoint Climate change, ecosystem quality, short term 3.152945e+02 PDF*m2*year
... ... ... ... ... ... ... ... ... ...
1187995 2050 Design Conventional ILUC NDC Endpoint Ionizing radiation, ecosystem quality 2.913296e-07 PDF*m2*year
1187996 2050 Design Conventional ILUC NDC Endpoint Ionizing radiation, ecosystem quality 3.276337e-07 PDF*m2*year
1187997 2050 Design Conventional ILUC NDC Endpoint Ionizing radiation, ecosystem quality 2.838208e-07 PDF*m2*year
1187998 2050 Design Conventional ILUC NDC Endpoint Ionizing radiation, ecosystem quality 3.698479e-07 PDF*m2*year
1187999 2050 Design Conventional ILUC NDC Endpoint Ionizing radiation, ecosystem quality 2.875093e-07 PDF*m2*year

1188000 rows × 9 columns

Aggregated damages¶

For the climate change, human toxicity, marine acidification and freshwater ecotoxicicty damages, the impacts are only considered over the short-term time span (from t=0 to t=100 years)
See world impact+ article from Bulle et al. (2019)

In [189]:
# using the function defined above to provide a dataframe with endpoint results that are aggregated

dfs = []
for k, v in names_typ_endpoint_2030.items():
    dfs.append(Monte_Carlo_endpoint_damage_sums_ST(v, k,500))
for k, v in names_typ_endpoint_2040.items():
    dfs.append(Monte_Carlo_endpoint_damage_sums_ST(v, k,500))
for k, v in names_typ_endpoint_2050.items():
    dfs.append(Monte_Carlo_endpoint_damage_sums_ST(v, k,500))
for k, v in names_des_endpoint_2030.items():
    dfs.append(Monte_Carlo_endpoint_damage_sums_ST(v, k,500))
for k, v in names_des_endpoint_2040.items():
    dfs.append(Monte_Carlo_endpoint_damage_sums_ST(v, k,500))
for k, v in names_des_endpoint_2050.items():
    dfs.append(Monte_Carlo_endpoint_damage_sums_ST(v, k,500))

endpoints_ST = pd.concat(dfs)    
endpoints_ST[["Mission", "Configuration", "Fuel", "Scenario", "Year"]] = endpoints_ST["Configuration"].str.split("_", expand=True)
endpoints_ST['Unit'] = ''
endpoints_ST['Impact Level'] = 'endpoint'
endpoints_ST[['Year', 'Mission', 'Configuration','Fuel','Scenario','Impact Level','Damage','Value','Unit']]
if  endpoints_ST.loc[:,'Damage'].isin(['EQ']).sum():
    endpoints_ST['Unit'] = 'PDF*m2*year'
else:
    endpoints_ST['Unit'] = 'DALY'
    
    
endpoints_ST=endpoints_ST.replace(['typical'],'Typical')
endpoints_ST=endpoints_ST.replace(['design'],'Design')
endpoints_ST=endpoints_ST.replace(['typical'],'Typical')
endpoints_ST=endpoints_ST.replace(['conventional'],'Conventional')
endpoints_ST=endpoints_ST.replace(['GTbat'],'GT-bat')
endpoints_ST=endpoints_ST.replace(['PEMFCbat'],'PEMFC-bat')
endpoints_ST=endpoints_ST.replace(['SOFCbat'],'SOFC-bat')
endpoints_ST=endpoints_ST.replace(['h2'],'H2')
endpoints_ST=endpoints_ST.replace(['kerosene'],'Kerosene')
MC_endpoints_ST=endpoints_ST.replace(['Endpoint'],'Endpoint')
MC_endpoints_ST
Out[189]:
Damage Value Configuration Mission Fuel Scenario Year Unit Impact Level
0 EQ 666.237944 Conventional Typical Kerosene NDC 2030 PDF*m2*year endpoint
1 EQ 610.300511 Conventional Typical Kerosene NDC 2030 PDF*m2*year endpoint
2 EQ 604.902153 Conventional Typical Kerosene NDC 2030 PDF*m2*year endpoint
3 EQ 629.974808 Conventional Typical Kerosene NDC 2030 PDF*m2*year endpoint
4 EQ 597.209666 Conventional Typical Kerosene NDC 2030 PDF*m2*year endpoint
... ... ... ... ... ... ... ... ... ...
995 HH 0.008415 Conventional Design ILUC NDC 2050 PDF*m2*year endpoint
996 HH 0.007955 Conventional Design ILUC NDC 2050 PDF*m2*year endpoint
997 HH 0.007579 Conventional Design ILUC NDC 2050 PDF*m2*year endpoint
998 HH 0.007801 Conventional Design ILUC NDC 2050 PDF*m2*year endpoint
999 HH 0.007819 Conventional Design ILUC NDC 2050 PDF*m2*year endpoint

88000 rows × 9 columns

Characterized results¶

In this section we calculate the characterized results based on medians from the Monte Carlo simulations

Medians¶
In [190]:
#medians of monte carlo endpoint results for each impact category and configuration present in the MC_results_Endpoint dataframe

n_iterations=500
length=len(MC_results_Endpoint)/n_iterations
Medians_endpoint=pd.DataFrame(index=range(int(length)),columns=['Year', 'Mission','Configuration', 'Fuel','Scenario', 'Impact Level','Category','Value', 'Unit'])


for k in range(int(length)):
    Medians_endpoint.iloc[[k]]= MC_results_Endpoint.iloc[[(n_iterations)*k]] #modulo 500
    Medians_endpoint.loc[k,'Value']=MC_results_Endpoint.loc[n_iterations*k:n_iterations*k+500,'Value'].median()
    
Medians_endpoint_all_results=Medians_endpoint
Medians_endpoint_all_results['Summary']=Medians_endpoint_all_results['Year']+" "+Medians_endpoint_all_results['Configuration']+' ('+Medians_endpoint_all_results['Fuel']+')'
Medians_endpoint_all_results['Category and unit']=Medians_endpoint_all_results['Category']+' ['+Medians_endpoint_all_results['Unit']+']'
In [191]:
#medians of monte carlo midpoint results for each impact category and configuration present in the MC_results_Midpoint dataframe

n_iterations=500
length=len(MC_results_Midpoint)/n_iterations
Medians_midpoint=pd.DataFrame(index=range(int(length)),columns=['Year', 'Mission','Configuration', 'Fuel','Scenario', 'Impact Level','Category','Value', 'Unit'])


for k in range(int(length)):
    Medians_midpoint.iloc[[k]]= MC_results_Midpoint.iloc[[(n_iterations)*k]] #modulo 500
    Medians_midpoint.loc[k,'Value']=MC_results_Midpoint.loc[n_iterations*k:n_iterations*k+500,'Value'].median()
    
Medians_midpoint['Category and unit']=Medians_midpoint['Category']+' ['+Medians_midpoint['Unit']+']'
Endpoint dataframe¶

In this section we present dataframes with endpoint characterized results for each SSP scenario and mission type

NDC¶
In [192]:
Medians_endpoint_all_results_NDC=Medians_endpoint_all_results[Medians_endpoint_all_results['Scenario']=='NDC']

Typical Mission

In [193]:
NDC_typical_endpoint_typical=Medians_endpoint_all_results_NDC[Medians_endpoint_all_results_NDC['Mission']=='Typical']
NDC_typical_endpoint_typical=NDC_typical_endpoint_typical.pivot('Category and unit','Summary','Value')
NDC_typical_endpoint_typical
C:\Users\kmadu\AppData\Local\Temp\ipykernel_17960\3670571744.py:2: FutureWarning: In a future version of pandas all arguments of DataFrame.pivot will be keyword-only.
  NDC_typical_endpoint_typical=NDC_typical_endpoint_typical.pivot('Category and unit','Summary','Value')
Out[193]:
Summary 2030 Conventional (AAF) 2030 Conventional (ILUC) 2030 Conventional (Kerosene) 2030 GT-bat (AAF) 2030 GT-bat (ILUC) 2030 GT-bat (Kerosene) 2040 Conventional (AAF) 2040 Conventional (ILUC) 2040 Conventional (Kerosene) 2040 GT-bat (AAF) 2040 GT-bat (ILUC) 2040 GT-bat (Kerosene) 2040 PEMFC-bat (H2) 2050 Conventional (AAF) 2050 Conventional (ILUC) 2050 Conventional (Kerosene) 2050 PEMFC-bat (H2) 2050 SOFC-bat (H2)
Category and unit
Climate change, ecosystem quality, long term [PDF*m2*year] 373.593966 548.62447 1174.009091 408.819477 547.724501 984.78505 310.308337 336.048075 1062.328517 252.431841 458.771045 673.893192 213.186644 247.199803 358.287081 1018.615449 168.612649 156.351888
Climate change, ecosystem quality, short term [PDF*m2*year] 172.316605 221.094746 341.681672 170.811855 209.4879 289.036318 144.762142 130.734214 310.46084 107.003706 186.586035 200.029706 70.451015 115.449576 146.708791 296.826737 57.114787 53.614942
Climate change, human health, long term [DALY] 0.0017 0.002494 0.005347 0.001861 0.002491 0.004484 0.001412 0.001533 0.004839 0.001147 0.002086 0.003068 0.000971 0.001127 0.001629 0.004639 0.000768 0.000712
Climate change, human health, short term [DALY] 0.000798 0.001023 0.001579 0.00079 0.000969 0.001336 0.00067 0.000605 0.001435 0.000495 0.000863 0.000925 0.000326 0.000534 0.000679 0.001372 0.000264 0.000248
Freshwater acidification [PDF*m2*year] 15.007743 15.023673 12.010509 12.838089 12.826743 9.872749 13.534173 9.792578 11.266306 9.824503 13.570244 8.537776 8.113268 12.094345 12.100958 10.889082 6.773565 6.010614
Freshwater ecotoxicity, long term [PDF*m2*year] 23392.242086 23392.242086 20726.729491 28967.173006 28967.173006 24431.852901 24550.584296 28365.982862 21292.801748 28365.982855 24550.584296 26602.010864 44196.854806 26504.942118 26504.942118 21572.867159 43609.551137 39531.603724
Freshwater ecotoxicity, short term [PDF*m2*year] 24.640533 24.640533 34.918195 28.529681 28.529681 34.067384 24.922241 24.09991 34.503722 24.09991 24.922241 29.544248 29.746197 24.275411 24.275411 33.873563 29.010504 29.025955
Freshwater eutrophication [PDF*m2*year] 0.911352 0.911352 0.773626 0.787676 0.787676 0.65816 0.777002 0.491783 0.703301 0.491783 0.777002 0.446803 0.391708 0.626957 0.626957 0.679656 0.364327 0.292507
Human toxicity cancer, long term [DALY] 0.000007 0.000007 0.000008 0.000009 0.000009 0.000009 0.000008 0.000009 0.000008 0.000009 0.000008 0.000009 0.000015 0.000008 0.000008 0.000008 0.000015 0.000013
Human toxicity cancer, short term [DALY] 0.0002 0.0002 0.000147 0.000313 0.000313 0.00022 0.00022 0.000277 0.000153 0.000277 0.00022 0.00024 0.000539 0.000267 0.000267 0.000151 0.000512 0.000447
Human toxicity non-cancer, long term [DALY] 0.00026 0.00026 0.000276 0.000323 0.000323 0.000307 0.000272 0.000313 0.000276 0.000313 0.000272 0.000315 0.000499 0.000296 0.000296 0.000275 0.000497 0.000446
Human toxicity non-cancer, short term [DALY] 0.000341 0.000341 0.000302 0.000427 0.000427 0.000368 0.000345 0.000396 0.000301 0.000396 0.000345 0.000372 0.000565 0.000358 0.000358 0.000299 0.000557 0.000505
Ionizing radiation, ecosystem quality [PDF*m2*year] 0.0 0.0 0.0 0.000001 0.000001 0.000001 0.0 0.0 0.0 0.0 0.0 0.0 0.000001 0.0 0.0 0.0 0.0 0.0
Ionizing radiation, human health [DALY] 0.000002 0.000002 0.000003 0.000008 0.000008 0.000006 0.000002 0.000003 0.000003 0.000003 0.000002 0.000004 0.00001 0.000002 0.000002 0.000002 0.000005 0.000004
Land occupation, biodiversity [PDF*m2*year] 653.309082 653.309082 22.725733 532.202053 532.202053 27.956021 583.832807 340.879258 22.981712 340.879258 583.832807 27.599897 46.656081 534.958387 534.958387 22.796804 40.481212 36.764671
Land transformation, biodiversity [PDF*m2*year] 72.602009 72.602009 114.952158 99.402707 99.402707 116.29628 74.623333 83.615669 110.726471 83.615669 74.623333 103.978032 152.182589 79.982763 79.982763 107.056593 142.275864 123.639343
Marine acidification, long term [PDF*m2*year] 76.179902 118.306849 283.245637 86.694194 120.249726 237.148274 62.752183 73.929288 256.255612 53.517562 98.678711 161.793198 48.875865 49.834044 76.597096 245.628552 38.246939 35.646648
Marine acidification, short term [PDF*m2*year] 8.269529 12.84252 30.750577 9.410883 13.053425 25.743557 6.811915 8.025219 27.818861 5.809472 10.711834 17.571089 5.305604 5.409617 8.314817 26.666939 4.151806 3.869538
Marine eutrophication [PDF*m2*year] 3.602866 3.587381 1.912251 2.882054 2.878442 1.453253 3.293062 1.939584 1.850725 1.944841 3.288865 1.149948 1.095288 2.968799 2.957397 1.802553 1.012422 0.929792
Ozone layer depletion [DALY] 0.0 0.0 0.000001 0.0 0.0 0.000001 0.0 0.0 0.000001 0.0 0.0 0.0 0.0 0.0 0.0 0.000001 0.0 0.0
Particulate matter formation [DALY] 0.000742 0.00074 0.000441 0.000701 0.000701 0.000428 0.000655 0.000509 0.000408 0.00051 0.000656 0.000373 0.00045 0.000577 0.000577 0.000388 0.000372 0.000339
Photochemical oxidant formation [DALY] 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
Terrestrial acidification [PDF*m2*year] 124.313835 124.408015 83.389207 103.253388 103.151885 66.76577 111.038651 75.034556 78.275704 75.100951 111.409189 56.553151 52.167279 97.485832 97.543573 75.652575 43.432269 38.576516
Thermally polluted water [PDF*m2*year] 0.001546 0.001546 0.001147 0.004256 0.004256 0.002587 0.001453 0.001992 0.000935 0.001992 0.001453 0.001712 0.004607 0.001215 0.001215 0.0007 0.002252 0.001912
Water availability, freshwater ecosystem [PDF*m2*year] 0.016753 0.016753 0.006341 0.028734 0.028734 0.013715 0.014795 0.013965 0.005218 0.013965 0.014795 0.008649 0.022501 0.012465 0.012465 0.004188 0.0129 0.010962
Water availability, human health [DALY] 0.00276 0.00276 0.00039 0.002623 0.002623 0.000594 0.002432 0.001695 0.000388 0.001695 0.002432 0.000561 0.001497 0.002087 0.002087 0.000362 0.00132 0.001122
Water availability, terrestrial ecosystem [PDF*m2*year] 0.405326 0.405326 0.0421 0.338226 0.338226 0.047696 0.352991 0.21803 0.040753 0.21803 0.352991 0.044253 0.08831 0.295411 0.295411 0.03902 0.083035 0.072341

Design Mission

In [194]:
Medians_endpoint_all_results_NDC_design=Medians_endpoint_all_results_NDC[Medians_endpoint_all_results_NDC['Mission']=='Design']
Medians_endpoint_all_results_NDC_design=Medians_endpoint_all_results_NDC[Medians_endpoint_all_results_NDC['Mission']=='Design']
NDC_design=Medians_endpoint_all_results_NDC_design.pivot('Category and unit','Summary','Value')
NDC_design
C:\Users\kmadu\AppData\Local\Temp\ipykernel_17960\616642206.py:3: FutureWarning: In a future version of pandas all arguments of DataFrame.pivot will be keyword-only.
  NDC_design=Medians_endpoint_all_results_NDC_design.pivot('Category and unit','Summary','Value')
Out[194]:
Summary 2030 Conventional (AAF) 2030 Conventional (ILUC) 2030 Conventional (Kerosene) 2030 GT-bat (AAF) 2030 GT-bat (ILUC) 2030 GT-bat (Kerosene) 2040 Conventional (AAF) 2040 Conventional (ILUC) 2040 Conventional (Kerosene) 2040 GT-bat (AAF) 2040 GT-bat (ILUC) 2040 GT-bat (Kerosene) 2040 PEMFC-bat (H2) 2050 Conventional (AAF) 2050 Conventional (ILUC) 2050 Conventional (Kerosene) 2050 PEMFC-bat (H2) 2050 SOFC-bat (H2)
Category and unit
Climate change, ecosystem quality, long term [PDF*m2*year] 719.650172 1137.124501 2578.743868 925.007372 1340.106811 2579.33737 576.810615 756.308235 2334.602141 496.941487 930.726158 1845.290397 446.838227 464.036402 730.910613 2251.387255 341.275251 303.103199
Climate change, ecosystem quality, short term [PDF*m2*year] 348.913466 465.932038 745.728483 410.329284 525.092447 746.639345 286.685467 307.1028 674.625546 232.529922 386.552637 535.379125 142.514019 228.34825 304.243106 650.239522 111.248889 99.024884
Climate change, human health, long term [DALY] 0.003287 0.00517 0.011743 0.004205 0.006094 0.011749 0.002619 0.003443 0.010638 0.002258 0.004233 0.008403 0.002036 0.002109 0.003325 0.010253 0.001556 0.001381
Climate change, human health, short term [DALY] 0.001615 0.002156 0.003446 0.001899 0.002429 0.003451 0.001327 0.001421 0.003118 0.001076 0.001789 0.002474 0.000659 0.001057 0.001408 0.003005 0.000514 0.000458
Freshwater acidification [PDF*m2*year] 31.316987 31.346993 24.349665 35.022531 35.070342 25.479944 28.021624 24.088206 22.743503 24.111492 28.00446 22.054776 17.252913 24.900926 24.843731 21.955887 14.603733 12.316105
Freshwater ecotoxicity, long term [PDF*m2*year] 27770.419454 27770.419454 21620.011178 43946.652404 43946.652416 25983.711804 29369.314804 32560.397493 21776.525157 32560.397492 29369.314804 38678.667256 99377.788079 33661.434172 33661.434172 22145.411197 93179.139107 80524.108868
Freshwater ecotoxicity, short term [PDF*m2*year] 37.459936 37.459936 60.731073 51.209919 51.209919 64.183669 35.555449 33.250681 57.754107 33.250681 35.555449 57.401215 65.358738 34.62463 34.62463 56.293646 59.666662 54.30195
Freshwater eutrophication [PDF*m2*year] 2.088919 2.088919 1.75648 2.180668 2.180668 1.78183 1.771771 1.366787 1.609746 1.366787 1.771771 1.268911 1.265435 1.427834 1.427834 1.554971 1.129233 0.89292
Human toxicity cancer, long term [DALY] 0.000008 0.000008 0.00001 0.000013 0.000013 0.000011 0.000008 0.00001 0.00001 0.00001 0.000008 0.000015 0.000034 0.00001 0.00001 0.00001 0.000032 0.000027
Human toxicity cancer, short term [DALY] 0.000311 0.000311 0.00019 0.00064 0.00064 0.000276 0.000347 0.000388 0.00019 0.000388 0.000347 0.000532 0.001616 0.000458 0.000458 0.000189 0.001514 0.001287
Human toxicity non-cancer, long term [DALY] 0.000276 0.000276 0.000313 0.00045 0.00045 0.000352 0.000299 0.000336 0.000308 0.000336 0.000299 0.000473 0.001111 0.000357 0.000357 0.000307 0.001039 0.000882
Human toxicity non-cancer, short term [DALY] 0.000422 0.000422 0.000332 0.000644 0.000644 0.00042 0.000426 0.000466 0.000326 0.000466 0.000426 0.000525 0.001207 0.000459 0.000459 0.000323 0.001123 0.000969
Ionizing radiation, ecosystem quality [PDF*m2*year] 0.0 0.0 0.000001 0.000001 0.000001 0.000001 0.0 0.0 0.000001 0.0 0.0 0.000001 0.000002 0.0 0.0 0.000001 0.000001 0.000001
Ionizing radiation, human health [DALY] 0.000003 0.000003 0.000006 0.00002 0.00002 0.000009 0.000003 0.000005 0.000006 0.000005 0.000003 0.000014 0.000037 0.000003 0.000003 0.000005 0.000016 0.000013
Land occupation, biodiversity [PDF*m2*year] 1492.994781 1492.994781 26.869642 1507.097555 1507.097555 32.896824 1330.220443 995.35453 26.693175 995.35453 1330.220443 50.526015 120.122205 1217.126019 1217.126019 26.633454 94.144288 81.434546
Land transformation, biodiversity [PDF*m2*year] 118.57439 118.57439 216.590384 210.897996 210.897996 231.395515 118.629639 122.22682 202.561398 122.22682 118.629639 264.879694 454.836362 132.943594 132.943594 196.100335 409.998796 347.827726
Marine acidification, long term [PDF*m2*year] 142.586105 242.893247 622.861042 189.183028 289.429015 622.669337 111.806333 161.978007 564.072362 98.961733 197.149036 443.766966 99.878732 90.264004 153.945142 543.361076 75.099955 66.709845
Marine acidification, short term [PDF*m2*year] 15.478097 26.366702 67.640587 20.536316 31.418282 67.615251 12.136872 17.583139 61.269863 10.742557 21.401047 48.183907 10.842099 9.798395 16.711151 58.999793 8.152298 7.241529
Marine eutrophication [PDF*m2*year] 8.220768 8.219903 4.341855 9.081705 9.111746 4.808427 7.492667 6.162307 4.170882 6.159837 7.466423 4.03558 2.683875 6.743322 6.736285 4.057601 2.272041 1.999703
Ozone layer depletion [DALY] 0.0 0.0 0.000002 0.0 0.0 0.000002 0.0 0.0 0.000002 0.0 0.0 0.000001 0.0 0.0 0.0 0.000002 0.0 0.0
Particulate matter formation [DALY] 0.001481 0.001482 0.000788 0.001714 0.001714 0.000855 0.001291 0.001096 0.000719 0.001096 0.001292 0.000798 0.001024 0.001125 0.001125 0.000689 0.000818 0.000707
Photochemical oxidant formation [DALY] 0.000001 0.000001 0.000001 0.000001 0.000001 0.000001 0.000001 0.000001 0.000001 0.000001 0.000001 0.000001 0.0 0.000001 0.000001 0.000001 0.0 0.0
Terrestrial acidification [PDF*m2*year] 267.769429 268.162014 172.865856 293.634826 293.762072 181.706584 238.128207 199.439233 162.047583 199.70793 238.074319 155.79723 112.681324 207.998955 207.560191 156.381336 94.093131 79.567753
Thermally polluted water [PDF*m2*year] 0.002802 0.002802 0.001848 0.010734 0.010734 0.003418 0.00263 0.003024 0.001429 0.003024 0.00263 0.005296 0.015799 0.002348 0.002348 0.001154 0.007135 0.006019
Water availability, freshwater ecosystem [PDF*m2*year] 0.033535 0.033535 0.009507 0.073769 0.073769 0.017483 0.029524 0.026913 0.007431 0.026913 0.029524 0.024213 0.073692 0.025346 0.025346 0.00619 0.038751 0.032857
Water availability, human health [DALY] 0.005928 0.005928 0.000459 0.006874 0.006874 0.000684 0.005155 0.004083 0.000429 0.004083 0.005155 0.001215 0.004531 0.004379 0.004379 0.0004 0.003736 0.003124
Water availability, terrestrial ecosystem [PDF*m2*year] 0.888296 0.888296 0.049824 0.900956 0.900956 0.057966 0.768238 0.581427 0.04629 0.581427 0.768238 0.060674 0.215415 0.639471 0.639471 0.043992 0.188345 0.155945
Base¶
In [195]:
Medians_endpoint_all_results_Base=Medians_endpoint_all_results[Medians_endpoint_all_results['Scenario']=='Base']                                                         

Typical Mission

In [196]:
Medians_endpoint_all_results_Base_typical=Medians_endpoint_all_results_Base[Medians_endpoint_all_results_Base['Mission']=='Typical']
Base_typical=Medians_endpoint_all_results_Base_typical.pivot('Category and unit','Summary','Value')
Base_typical
C:\Users\kmadu\AppData\Local\Temp\ipykernel_17960\755782553.py:2: FutureWarning: In a future version of pandas all arguments of DataFrame.pivot will be keyword-only.
  Base_typical=Medians_endpoint_all_results_Base_typical.pivot('Category and unit','Summary','Value')
Out[196]:
Summary 2030 Conventional (AAF) 2030 Conventional (Kerosene) 2030 GT-bat (AAF) 2030 GT-bat (Kerosene) 2040 Conventional (AAF) 2040 Conventional (Kerosene) 2040 GT-bat (AAF) 2040 GT-bat (Kerosene) 2040 PEMFC-bat (H2) 2050 Conventional (AAF) 2050 Conventional (Kerosene) 2050 PEMFC-bat (H2) 2050 SOFC-bat (H2)
Category and unit
Climate change, ecosystem quality, long term [PDF*m2*year] 415.491262 1207.108356 616.018199 1106.030626 384.792575 1104.784364 370.874967 779.380925 559.375101 319.375921 1053.642229 315.130666 280.217943
Climate change, ecosystem quality, short term [PDF*m2*year] 183.888645 352.61235 234.215542 326.1224 167.413121 323.546561 144.532607 232.739575 175.917011 137.046229 308.943903 103.562217 92.020284
Climate change, human health, long term [DALY] 0.001889 0.005498 0.002803 0.005037 0.001749 0.005033 0.001688 0.003549 0.002549 0.001452 0.004798 0.001435 0.001276
Climate change, human health, short term [DALY] 0.000851 0.00163 0.001083 0.001507 0.000775 0.001495 0.000669 0.001076 0.000813 0.000634 0.001428 0.000479 0.000425
Freshwater acidification [PDF*m2*year] 15.259835 12.181714 13.697693 10.356896 13.787071 11.365408 10.149669 8.763295 9.016261 12.211318 10.981907 6.950462 6.170377
Freshwater ecotoxicity, long term [PDF*m2*year] 23692.100384 20946.385997 29748.712077 24840.492304 24816.378905 21417.755181 28550.526353 26648.793708 44380.679735 26736.492477 21684.190239 44165.889823 39587.011987
Freshwater ecotoxicity, short term [PDF*m2*year] 26.41938 36.5062 30.762032 35.956742 26.506744 35.326461 28.289302 33.237482 35.302977 27.169965 35.919364 32.982613 29.912435
Freshwater eutrophication [PDF*m2*year] 0.912005 0.771932 0.786666 0.653595 0.774068 0.700202 0.485538 0.44177 0.382369 0.62261 0.68198 0.361239 0.292963
Human toxicity cancer, long term [DALY] 0.000008 0.000009 0.000011 0.00001 0.000008 0.000009 0.00001 0.00001 0.000016 0.000009 0.000008 0.000015 0.000013
Human toxicity cancer, short term [DALY] 0.000202 0.000149 0.00032 0.000224 0.000221 0.000153 0.000275 0.000236 0.000525 0.000265 0.000149 0.000512 0.000442
Human toxicity non-cancer, long term [DALY] 0.000265 0.00028 0.00035 0.000323 0.000278 0.000279 0.000321 0.000322 0.000521 0.000297 0.000275 0.000497 0.000449
Human toxicity non-cancer, short term [DALY] 0.000346 0.000307 0.000459 0.000387 0.000353 0.000307 0.000407 0.00038 0.000596 0.000363 0.000302 0.000564 0.00051
Ionizing radiation, ecosystem quality [PDF*m2*year] 0.0 0.0 0.000001 0.000001 0.0 0.0 0.0 0.0 0.000001 0.0 0.0 0.0 0.0
Ionizing radiation, human health [DALY] 0.000002 0.000003 0.000008 0.000006 0.000002 0.000003 0.000004 0.000004 0.000012 0.000002 0.000002 0.000005 0.000004
Land occupation, biodiversity [PDF*m2*year] 652.149029 21.023765 525.925159 23.511692 581.482286 21.947975 339.842901 24.957827 38.379626 530.546978 21.854149 35.458398 32.3392
Land transformation, biodiversity [PDF*m2*year] 71.6452 113.879264 91.867282 111.848521 73.820446 109.504415 79.898445 99.692027 138.549986 78.945529 106.0465 135.09771 116.082775
Marine acidification, long term [PDF*m2*year] 86.11602 291.398062 136.743187 266.403971 80.606012 266.549748 82.001788 187.371244 132.525583 67.279902 254.142184 73.604509 65.484368
Marine acidification, short term [PDF*m2*year] 9.348121 31.638873 14.843833 28.921751 8.749995 28.948351 8.90151 20.340562 14.391513 7.303411 27.590144 7.991182 7.109529
Marine eutrophication [PDF*m2*year] 3.629435 1.936707 2.958513 1.495842 3.316865 1.86752 1.987572 1.180827 1.131895 2.999981 1.826742 1.00907 0.899773
Ozone layer depletion [DALY] 0.0 0.000001 0.0 0.000001 0.0 0.000001 0.0 0.0 0.0 0.0 0.000001 0.0 0.0
Particulate matter formation [DALY] 0.000761 0.000454 0.000739 0.000453 0.00068 0.000425 0.000539 0.000394 0.000492 0.00059 0.0004 0.000384 0.000344
Photochemical oxidant formation [DALY] 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
Terrestrial acidification [PDF*m2*year] 126.025494 84.661574 108.862876 69.835521 112.907821 79.03299 77.424284 58.181616 58.065791 98.36929 76.388396 44.283998 39.369399
Thermally polluted water [PDF*m2*year] 0.001949 0.001487 0.008131 0.004719 0.002221 0.001296 0.003721 0.003207 0.010776 0.001825 0.000886 0.004371 0.003644
Water availability, freshwater ecosystem [PDF*m2*year] 0.018875 0.008297 0.055373 0.02836 0.020362 0.007542 0.027373 0.020277 0.072285 0.018243 0.005454 0.034915 0.028986
Water availability, human health [DALY] 0.002794 0.000414 0.002932 0.000752 0.002492 0.000413 0.001829 0.000672 0.001923 0.002117 0.000368 0.00141 0.0012
Water availability, terrestrial ecosystem [PDF*m2*year] 0.406583 0.043644 0.356612 0.057451 0.357106 0.04364 0.228053 0.052405 0.113326 0.298146 0.040462 0.087168 0.076582

Design Mission

In [197]:
Medians_endpoint_all_results_Base_design=Medians_endpoint_all_results_Base[Medians_endpoint_all_results_Base['Mission']=='Design']
Medians_endpoint_all_results_Base_design=Medians_endpoint_all_results_Base[Medians_endpoint_all_results_Base['Mission']=='Design']
Base_design=Medians_endpoint_all_results_Base_design.pivot('Category and unit','Summary','Value')
Base_design
C:\Users\kmadu\AppData\Local\Temp\ipykernel_17960\857142569.py:3: FutureWarning: In a future version of pandas all arguments of DataFrame.pivot will be keyword-only.
  Base_design=Medians_endpoint_all_results_Base_design.pivot('Category and unit','Summary','Value')
Out[197]:
Summary 2030 Conventional (AAF) 2030 Conventional (Kerosene) 2030 GT-bat (AAF) 2030 GT-bat (Kerosene) 2040 Conventional (AAF) 2040 Conventional (Kerosene) 2040 GT-bat (AAF) 2040 GT-bat (Kerosene) 2040 PEMFC-bat (H2) 2050 Conventional (AAF) 2050 Conventional (Kerosene) 2050 PEMFC-bat (H2) 2050 SOFC-bat (H2)
Category and unit
Climate change, ecosystem quality, long term [PDF*m2*year] 788.648172 2627.814451 1485.268064 2714.530247 703.78023 2387.560832 655.480818 2200.908272 1684.177378 587.458184 2298.49619 793.633858 685.078146
Climate change, ecosystem quality, short term [PDF*m2*year] 369.444663 759.283794 578.979158 788.950593 324.397918 691.144572 283.580709 646.460363 519.733564 265.851387 665.605316 253.122284 218.39431
Climate change, human health, long term [DALY] 0.003583 0.011972 0.006756 0.012362 0.003199 0.010873 0.002979 0.010022 0.007673 0.002671 0.010467 0.003614 0.003119
Climate change, human health, short term [DALY] 0.00171 0.003509 0.002679 0.003646 0.001501 0.003194 0.001312 0.002988 0.002402 0.00123 0.003076 0.00117 0.001009
Freshwater acidification [PDF*m2*year] 31.666462 24.560486 37.219734 26.07557 28.40143 22.929426 24.649488 22.895249 20.429903 25.041815 22.111458 14.81707 12.474759
Freshwater ecotoxicity, long term [PDF*m2*year] 28263.606434 21918.547038 46048.514722 26472.843408 29834.522769 21919.157751 32920.036856 39391.238569 101552.921259 34073.400265 22204.43253 93579.960181 79924.110429
Freshwater ecotoxicity, short term [PDF*m2*year] 39.682935 63.114919 56.915463 66.481923 38.133188 58.847242 37.999459 64.040888 78.547998 38.435221 58.48467 68.907681 59.014314
Freshwater eutrophication [PDF*m2*year] 2.080648 1.756363 2.174657 1.781594 1.76708 1.605666 1.36681 1.260366 1.245964 1.421042 1.560808 1.103215 0.873685
Human toxicity cancer, long term [DALY] 0.000008 0.00001 0.000017 0.000012 0.000009 0.00001 0.00001 0.000016 0.000039 0.00001 0.00001 0.000032 0.000027
Human toxicity cancer, short term [DALY] 0.000315 0.000192 0.000657 0.000281 0.000348 0.000188 0.000385 0.000524 0.00155 0.000455 0.000185 0.001492 0.001264
Human toxicity non-cancer, long term [DALY] 0.000283 0.000319 0.000523 0.000369 0.000308 0.000311 0.000349 0.000501 0.001205 0.000358 0.000307 0.001035 0.000883
Human toxicity non-cancer, short term [DALY] 0.00043 0.000338 0.000728 0.000442 0.000439 0.000331 0.000482 0.000561 0.001333 0.000468 0.000328 0.001144 0.000971
Ionizing radiation, ecosystem quality [PDF*m2*year] 0.0 0.000001 0.000002 0.000001 0.0 0.000001 0.0 0.000001 0.000003 0.0 0.000001 0.000001 0.000001
Ionizing radiation, human health [DALY] 0.000003 0.000006 0.000021 0.00001 0.000004 0.000006 0.000005 0.000016 0.000044 0.000004 0.000005 0.000018 0.000015
Land occupation, biodiversity [PDF*m2*year] 1485.927467 24.142948 1491.273941 27.272844 1325.790813 25.069491 996.809321 41.266566 90.574049 1210.921474 25.252309 76.18057 66.701784
Land transformation, biodiversity [PDF*m2*year] 117.17761 215.039307 190.86504 226.559519 118.013276 200.540147 118.436985 251.025574 408.501325 132.496947 194.880471 381.493384 321.598565
Marine acidification, long term [PDF*m2*year] 158.328634 635.011061 324.692505 655.261083 142.141243 576.815197 137.087184 529.617381 398.663922 119.561375 555.162323 184.473264 159.280658
Marine acidification, short term [PDF*m2*year] 17.18699 68.963319 35.246227 71.161498 15.429806 62.619826 14.881175 57.496394 43.310679 12.978702 60.275152 20.034654 17.291248
Marine eutrophication [PDF*m2*year] 8.251508 4.372859 9.233079 4.834307 7.543633 4.19023 6.219435 4.106708 2.870147 6.809575 4.09738 2.238387 1.88552
Ozone layer depletion [DALY] 0.0 0.000002 0.0 0.000002 0.0 0.000002 0.0 0.000001 0.0 0.0 0.000002 0.0 0.0
Particulate matter formation [DALY] 0.001516 0.000805 0.001806 0.000889 0.001325 0.000737 0.001136 0.000841 0.001123 0.001145 0.000702 0.00081 0.000695
Photochemical oxidant formation [DALY] 0.000001 0.000001 0.000001 0.000001 0.000001 0.000001 0.000001 0.000001 0.0 0.000001 0.000001 0.0 0.0
Terrestrial acidification [PDF*m2*year] 270.158605 174.506535 307.925569 185.375764 240.755324 163.249668 203.566311 161.337345 133.60317 209.447932 157.676173 94.793498 80.166978
Thermally polluted water [PDF*m2*year] 0.003387 0.002288 0.02122 0.005707 0.004022 0.001817 0.005288 0.011566 0.038877 0.003556 0.001364 0.014404 0.012059
Water availability, freshwater ecosystem [PDF*m2*year] 0.036839 0.011903 0.146537 0.032801 0.039894 0.009913 0.044424 0.075534 0.263524 0.037383 0.007565 0.117729 0.098563
Water availability, human health [DALY] 0.005983 0.000477 0.007718 0.000836 0.005273 0.00045 0.004276 0.001646 0.006109 0.004463 0.000401 0.004069 0.003385
Water availability, terrestrial ecosystem [PDF*m2*year] 0.889651 0.050743 0.951757 0.066801 0.773433 0.049127 0.597209 0.086301 0.306154 0.645117 0.046261 0.200746 0.167061
PkBudg500¶
In [198]:
Medians_endpoint_all_results_PkBudg500=Medians_endpoint_all_results[Medians_endpoint_all_results['Scenario']=='PkBudg500']                                                         

Typical Mission

In [199]:
Medians_endpoint_all_results_PkBudg500_typical=Medians_endpoint_all_results_PkBudg500[Medians_endpoint_all_results_PkBudg500['Mission']=='Typical']
PkBudg500_typical=Medians_endpoint_all_results_PkBudg500_typical.pivot('Category and unit','Summary','Value')
PkBudg500_typical
C:\Users\kmadu\AppData\Local\Temp\ipykernel_17960\438035318.py:2: FutureWarning: In a future version of pandas all arguments of DataFrame.pivot will be keyword-only.
  PkBudg500_typical=Medians_endpoint_all_results_PkBudg500_typical.pivot('Category and unit','Summary','Value')
Out[199]:
Summary 2030 Conventional (AAF) 2030 Conventional (Kerosene) 2030 GT-bat (AAF) 2030 GT-bat (Kerosene) 2040 Conventional (AAF) 2040 Conventional (Kerosene) 2040 GT-bat (AAF) 2040 GT-bat (Kerosene) 2040 PEMFC-bat (H2) 2050 Conventional (AAF) 2050 Conventional (Kerosene) 2050 PEMFC-bat (H2) 2050 SOFC-bat (H2)
Category and unit
Climate change, ecosystem quality, long term [PDF*m2*year] 344.439021 1150.708536 358.138277 944.928681 281.235589 1041.256881 218.164804 648.063501 171.517005 222.890457 1004.372126 149.008257 134.617744
Climate change, ecosystem quality, short term [PDF*m2*year] 162.594933 334.829319 155.018083 276.164983 135.51537 303.951057 96.21758 192.480882 57.240301 109.616701 294.249007 51.944325 47.411891
Climate change, human health, long term [DALY] 0.001567 0.005241 0.001628 0.004305 0.001278 0.004742 0.000993 0.002951 0.000781 0.001013 0.004576 0.000679 0.000615
Climate change, human health, short term [DALY] 0.000753 0.001547 0.000717 0.001276 0.000627 0.001405 0.000445 0.00089 0.000265 0.000507 0.00136 0.00024 0.000219
Freshwater acidification [PDF*m2*year] 14.85757 11.867976 12.615356 9.653768 13.519788 11.217769 9.76082 8.43188 8.04648 12.152636 10.910336 6.911159 6.119861
Freshwater ecotoxicity, long term [PDF*m2*year] 23235.616718 20577.477187 28914.173167 24378.259523 24609.619546 21288.021982 28475.930863 26586.252797 43674.297178 26686.529006 21762.544631 44187.040912 39493.111114
Freshwater ecotoxicity, short term [PDF*m2*year] 23.246177 33.43631 26.406977 32.67682 24.875478 34.423064 24.752834 29.960448 28.051581 26.79393 35.729922 29.25089 28.149953
Freshwater eutrophication [PDF*m2*year] 0.917117 0.772466 0.791859 0.659521 0.779812 0.704299 0.495364 0.450631 0.385938 0.627097 0.681883 0.368713 0.303653
Human toxicity cancer, long term [DALY] 0.000007 0.000008 0.000009 0.000009 0.000008 0.000008 0.000009 0.000009 0.000015 0.000009 0.000008 0.000015 0.000013
Human toxicity cancer, short term [DALY] 0.0002 0.000148 0.000318 0.000224 0.000222 0.000153 0.000281 0.000242 0.000544 0.000272 0.000153 0.00053 0.000458
Human toxicity non-cancer, long term [DALY] 0.000257 0.000273 0.00032 0.000304 0.000271 0.000274 0.000313 0.000315 0.000496 0.000298 0.000276 0.000502 0.000451
Human toxicity non-cancer, short term [DALY] 0.000336 0.000298 0.000423 0.000364 0.000342 0.000299 0.000392 0.000368 0.000558 0.000358 0.000298 0.000556 0.000504
Ionizing radiation, ecosystem quality [PDF*m2*year] 0.0 0.0 0.000001 0.000001 0.0 0.0 0.0 0.0 0.000001 0.0 0.0 0.0 0.0
Ionizing radiation, human health [DALY] 0.000001 0.000003 0.000007 0.000006 0.000002 0.000003 0.000003 0.000004 0.000009 0.000002 0.000002 0.000004 0.000004
Land occupation, biodiversity [PDF*m2*year] 657.273158 22.931519 532.430711 27.58697 589.589179 25.141669 348.789018 30.565563 54.098897 546.735365 27.429017 48.95094 44.143116
Land transformation, biodiversity [PDF*m2*year] 73.081576 115.653282 101.874269 117.92834 74.66036 110.875062 84.68521 104.590592 155.1724 78.098547 105.658036 142.540224 124.653795
Marine acidification, long term [PDF*m2*year] 68.80692 277.7565 74.043585 227.505378 55.352294 251.193121 45.245873 155.657722 38.877194 43.973795 242.271521 33.596991 30.363628
Marine acidification, short term [PDF*m2*year] 7.469172 30.15668 8.037626 24.697192 6.008637 27.277802 4.911559 16.900506 4.220222 4.773471 26.306012 3.647042 3.296052
Marine eutrophication [PDF*m2*year] 3.582324 1.907864 2.883811 1.45172 3.301653 1.862943 1.978016 1.158286 1.055043 2.995696 1.844432 1.026167 0.941476
Ozone layer depletion [DALY] 0.0 0.000001 0.0 0.000001 0.0 0.000001 0.0 0.0 0.0 0.0 0.000001 0.0 0.0
Particulate matter formation [DALY] 0.000716 0.00042 0.00067 0.000401 0.000645 0.000399 0.000498 0.000357 0.000424 0.000579 0.000391 0.000377 0.000337
Photochemical oxidant formation [DALY] 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
Terrestrial acidification [PDF*m2*year] 123.387978 82.577621 101.683879 65.299184 111.061117 77.969719 74.935445 55.914279 51.668118 97.896969 75.855891 44.284187 39.203271
Thermally polluted water [PDF*m2*year] 0.001271 0.000909 0.003582 0.002133 0.001191 0.000715 0.00164 0.00137 0.004058 0.001116 0.000621 0.002105 0.001803
Water availability, freshwater ecosystem [PDF*m2*year] 0.015443 0.005113 0.023386 0.010415 0.013572 0.004244 0.012544 0.007269 0.020579 0.012093 0.003851 0.012686 0.010971
Water availability, human health [DALY] 0.00275 0.000384 0.002668 0.000608 0.002414 0.000368 0.001731 0.000585 0.001667 0.002103 0.000373 0.001478 0.001279
Water availability, terrestrial ecosystem [PDF*m2*year] 0.403712 0.040919 0.336733 0.046037 0.351325 0.04035 0.219538 0.044053 0.088382 0.298485 0.040956 0.084654 0.075493

Design Mission

In [200]:
Medians_endpoint_all_results_PkBudg500_design=Medians_endpoint_all_results_PkBudg500[Medians_endpoint_all_results_PkBudg500['Mission']=='Design']
Medians_endpoint_all_results_PkBudg500_design=Medians_endpoint_all_results_PkBudg500[Medians_endpoint_all_results_PkBudg500['Mission']=='Design']
PkBudg500_design=Medians_endpoint_all_results_PkBudg500_design.pivot('Category and unit','Summary','Value')
PkBudg500_design
C:\Users\kmadu\AppData\Local\Temp\ipykernel_17960\1645133878.py:3: FutureWarning: In a future version of pandas all arguments of DataFrame.pivot will be keyword-only.
  PkBudg500_design=Medians_endpoint_all_results_PkBudg500_design.pivot('Category and unit','Summary','Value')
Out[200]:
Summary 2030 Conventional (AAF) 2030 Conventional (Kerosene) 2030 GT-bat (AAF) 2030 GT-bat (Kerosene) 2040 Conventional (AAF) 2040 Conventional (Kerosene) 2040 GT-bat (AAF) 2040 GT-bat (Kerosene) 2040 PEMFC-bat (H2) 2050 Conventional (AAF) 2050 Conventional (Kerosene) 2050 PEMFC-bat (H2) 2050 SOFC-bat (H2)
Category and unit
Climate change, ecosystem quality, long term [PDF*m2*year] 671.198593 2546.458241 821.713167 2531.819757 524.173448 2310.934837 447.11551 1808.732893 365.006962 430.074805 2235.36658 309.194229 265.518609
Climate change, ecosystem quality, short term [PDF*m2*year] 331.776259 734.556651 376.064066 731.310036 270.867442 667.400484 220.790182 525.029292 116.827432 218.690986 647.535032 100.900612 88.618966
Climate change, human health, long term [DALY] 0.003048 0.011598 0.003734 0.011531 0.002381 0.010537 0.002031 0.008237 0.001664 0.001954 0.01018 0.001413 0.001211
Climate change, human health, short term [DALY] 0.001536 0.003395 0.001741 0.00338 0.001254 0.003084 0.001022 0.002427 0.00054 0.001013 0.002993 0.000466 0.00041
Freshwater acidification [PDF*m2*year] 31.081043 24.039294 34.518618 25.230748 28.052882 22.698943 24.128869 21.952999 17.023313 24.883886 22.047068 14.80311 12.434463
Freshwater ecotoxicity, long term [PDF*m2*year] 27592.562362 21422.357196 43867.152997 25850.886709 29433.333428 21735.944893 32790.821706 38860.582574 98500.282176 33868.137987 22234.550704 95111.025886 81286.347112
Freshwater ecotoxicity, short term [PDF*m2*year] 34.873568 59.064663 47.610189 61.506233 35.072678 57.459001 33.972235 57.688222 61.116608 36.369132 58.006996 58.608523 52.251955
Freshwater eutrophication [PDF*m2*year] 2.097111 1.75461 2.183071 1.784145 1.785157 1.607098 1.380234 1.276723 1.268772 1.43453 1.565495 1.138418 0.911218
Human toxicity cancer, long term [DALY] 0.000008 0.00001 0.000013 0.000011 0.000008 0.00001 0.00001 0.000015 0.000033 0.00001 0.00001 0.000032 0.000028
Human toxicity cancer, short term [DALY] 0.000312 0.00019 0.000653 0.000281 0.00035 0.000189 0.000395 0.000542 0.001611 0.000468 0.000189 0.001581 0.001325
Human toxicity non-cancer, long term [DALY] 0.000271 0.000309 0.000446 0.000348 0.000298 0.000306 0.000337 0.000472 0.001087 0.00036 0.000308 0.001051 0.000912
Human toxicity non-cancer, short term [DALY] 0.000415 0.000326 0.000637 0.000416 0.000423 0.000323 0.000463 0.000519 0.001174 0.00046 0.000322 0.001123 0.000981
Ionizing radiation, ecosystem quality [PDF*m2*year] 0.0 0.000001 0.000001 0.000001 0.0 0.000001 0.0 0.000001 0.000002 0.0 0.000001 0.000001 0.000001
Ionizing radiation, human health [DALY] 0.000002 0.000006 0.000019 0.000009 0.000003 0.000005 0.000004 0.000013 0.000034 0.000003 0.000005 0.000014 0.000012
Land occupation, biodiversity [PDF*m2*year] 1500.540662 27.254248 1499.388059 32.752366 1347.943393 30.132869 1011.121771 59.279252 143.817896 1245.445263 34.410929 117.585041 102.625729
Land transformation, biodiversity [PDF*m2*year] 119.109439 217.152567 217.65296 232.839318 118.072275 200.862553 122.953719 267.416224 463.686864 129.693561 194.437078 411.408682 354.130341
Marine acidification, long term [PDF*m2*year] 130.026283 615.432511 164.161672 611.176698 98.868893 558.450784 86.58912 434.963257 80.203682 81.378647 539.978008 67.313715 58.10472
Marine acidification, short term [PDF*m2*year] 14.114696 66.807082 17.820182 66.359016 10.732479 60.680695 9.399477 47.221807 8.706321 8.833867 58.624928 7.307081 6.30742
Marine eutrophication [PDF*m2*year] 8.193289 4.316892 9.045889 4.776261 7.518437 4.176407 6.188904 4.059177 2.638021 6.799504 4.085326 2.335045 2.000978
Ozone layer depletion [DALY] 0.0 0.000002 0.0 0.000002 0.0 0.000002 0.0 0.000001 0.0 0.0 0.000002 0.0 0.0
Particulate matter formation [DALY] 0.001444 0.000757 0.001652 0.000817 0.00128 0.000707 0.001084 0.000776 0.000961 0.001128 0.000691 0.000826 0.00071
Photochemical oxidant formation [DALY] 0.000001 0.000001 0.000001 0.000001 0.000001 0.000001 0.000001 0.000001 0.0 0.000001 0.000001 0.0 0.0
Terrestrial acidification [PDF*m2*year] 266.486161 171.206096 289.990889 179.796967 238.543799 161.644254 200.058684 155.19787 111.139447 207.76489 157.152922 95.332417 80.017251
Thermally polluted water [PDF*m2*year] 0.002369 0.001511 0.009269 0.002845 0.002272 0.001166 0.002593 0.004705 0.014479 0.00221 0.001057 0.006893 0.005889
Water availability, freshwater ecosystem [PDF*m2*year] 0.031527 0.00779 0.060588 0.013706 0.028111 0.006248 0.025257 0.022242 0.070775 0.024987 0.005766 0.039293 0.03347
Water availability, human health [DALY] 0.005918 0.000448 0.006971 0.000693 0.005176 0.000411 0.004153 0.001391 0.005217 0.004464 0.000412 0.004344 0.003687
Water availability, terrestrial ecosystem [PDF*m2*year] 0.888509 0.04815 0.89538 0.055749 0.772545 0.047031 0.587296 0.062724 0.220154 0.647582 0.047143 0.195259 0.164052
Midpoint dataframe¶

In this section we present dataframes with midpoint characterized results for each SSP scenario and mission type

In [201]:
Medians_midpoint_all_results=Medians_midpoint
Medians_midpoint_all_results['Summary']=Medians_midpoint_all_results['Year']+" "+Medians_midpoint_all_results['Configuration']+' ('+Medians_midpoint_all_results['Fuel']+')'

#Medians_midpoint_all_results=Medians_midpoint_all_results.drop(columns=['Year','Configuration','Fuel'])
NDC¶
In [202]:
Medians_midpoint_all_results_NDC=Medians_midpoint_all_results[Medians_midpoint_all_results['Scenario']=='NDC']                                                         

Typical Mission

In [203]:
Medians_midpoint_all_results_NDC_typical=Medians_midpoint_all_results_NDC[Medians_midpoint_all_results_NDC['Mission']=='Typical']
NDC_typical=Medians_midpoint_all_results_NDC_typical.pivot('Category and unit','Summary','Value').astype(float).style.format('{:.2E}')
NDC_typical
C:\Users\kmadu\AppData\Local\Temp\ipykernel_17960\1701558939.py:2: FutureWarning: In a future version of pandas all arguments of DataFrame.pivot will be keyword-only.
  NDC_typical=Medians_midpoint_all_results_NDC_typical.pivot('Category and unit','Summary','Value').astype(float).style.format('{:.2E}')
Out[203]:
Summary 2030 Conventional (AAF) 2030 Conventional (ILUC) 2030 Conventional (Kerosene) 2030 GT-bat (AAF) 2030 GT-bat (ILUC) 2030 GT-bat (Kerosene) 2040 Conventional (AAF) 2040 Conventional (ILUC) 2040 Conventional (Kerosene) 2040 GT-bat (AAF) 2040 GT-bat (ILUC) 2040 GT-bat (Kerosene) 2040 PEMFC-bat (H2) 2050 Conventional (AAF) 2050 Conventional (ILUC) 2050 Conventional (Kerosene) 2050 PEMFC-bat (H2) 2050 SOFC-bat (H2)
Category and unit                                    
Climate change, long term [kg CO2eq.] 8.67E+02 1.14E+03 1.89E+03 8.68E+02 1.09E+03 1.59E+03 7.24E+02 6.72E+02 1.71E+03 5.38E+02 9.62E+02 1.09E+03 3.61E+02 5.75E+02 7.52E+02 1.64E+03 2.89E+02 2.71E+02
Climate change, short term [kg CO2eq.] 9.74E+02 1.25E+03 1.93E+03 9.66E+02 1.18E+03 1.63E+03 8.19E+02 7.39E+02 1.75E+03 6.05E+02 1.06E+03 1.13E+03 3.98E+02 6.53E+02 8.30E+02 1.68E+03 3.23E+02 3.03E+02
Fossil and nuclear energy use [MJ dep.] 9.75E+03 9.75E+03 2.86E+04 1.51E+04 1.51E+04 2.65E+04 8.70E+03 8.53E+03 2.60E+04 8.53E+03 8.70E+03 1.82E+04 1.31E+04 7.09E+03 7.09E+03 2.46E+04 7.65E+03 6.76E+03
Freshwater acidification [kg SO2eq.] 1.86E-05 1.85E-05 1.52E-05 1.57E-05 1.57E-05 1.23E-05 1.68E-05 1.19E-05 1.42E-05 1.19E-05 1.68E-05 1.05E-05 9.73E-06 1.50E-05 1.51E-05 1.38E-05 8.11E-06 7.21E-06
Freshwater ecotoxicity [CTUe] 4.08E+07 4.08E+07 3.62E+07 5.07E+07 5.07E+07 4.28E+07 4.29E+07 4.97E+07 3.72E+07 4.97E+07 4.29E+07 4.66E+07 7.75E+07 4.64E+07 4.64E+07 3.77E+07 7.65E+07 6.93E+07
Freshwater eutrophication [kg PO4eq.] 7.99E-02 7.99E-02 6.79E-02 6.91E-02 6.91E-02 5.77E-02 6.82E-02 4.31E-02 6.17E-02 4.31E-02 6.82E-02 3.92E-02 3.44E-02 5.50E-02 5.50E-02 5.96E-02 3.20E-02 2.57E-02
Human toxicity cancer [CTUh] 7.42E-05 7.42E-05 5.59E-05 1.03E-04 1.03E-04 7.62E-05 7.84E-05 9.11E-05 5.68E-05 9.11E-05 7.84E-05 7.93E-05 1.56E-04 8.99E-05 8.99E-05 5.54E-05 1.49E-04 1.32E-04
Human toxicity non cancer [CTUh] 2.94E-04 2.94E-04 2.73E-04 3.66E-04 3.66E-04 3.20E-04 2.99E-04 3.41E-04 2.72E-04 3.41E-04 2.99E-04 3.27E-04 5.40E-04 3.14E-04 3.14E-04 2.70E-04 5.18E-04 4.67E-04
Ionizing radiations [Bq C14eq.] 7.29E+03 7.29E+03 1.51E+04 3.67E+04 3.67E+04 2.82E+04 8.77E+03 1.61E+04 1.34E+04 1.61E+04 8.77E+03 1.88E+04 4.88E+04 8.08E+03 8.08E+03 1.18E+04 2.21E+04 1.85E+04
Land occupation, biodiversity [m2eq*yr.] 9.32E+02 9.32E+02 3.24E+01 7.60E+02 7.60E+02 3.99E+01 8.33E+02 4.87E+02 3.28E+01 4.87E+02 8.33E+02 3.94E+01 6.66E+01 7.64E+02 7.64E+02 3.25E+01 5.78E+01 5.25E+01
Land transformation, biodiversity [m2eq.] 2.87E-01 2.87E-01 4.55E-01 3.93E-01 3.93E-01 4.60E-01 2.95E-01 3.31E-01 4.38E-01 3.31E-01 2.95E-01 4.11E-01 6.02E-01 3.16E-01 3.16E-01 4.23E-01 5.62E-01 4.89E-01
Marine eutrophication [kg Neq.] 2.88E-01 2.87E-01 1.53E-01 2.31E-01 2.30E-01 1.16E-01 2.63E-01 1.55E-01 1.48E-01 1.56E-01 2.63E-01 9.20E-02 8.76E-02 2.38E-01 2.37E-01 1.44E-01 8.10E-02 7.44E-02
Mineral resources use [kg dep.] 5.53E+01 5.53E+01 5.38E+01 5.67E+01 5.67E+01 5.51E+01 5.52E+01 5.57E+01 5.38E+01 5.57E+01 5.52E+01 5.49E+01 5.63E+01 5.52E+01 5.52E+01 5.38E+01 5.60E+01 5.60E+01
Ozone Layer Depletion [kg CFC-11eq.] 7.80E-05 7.80E-05 4.28E-04 7.85E-05 7.85E-05 3.44E-04 6.39E-05 4.94E-05 3.88E-04 4.94E-05 6.39E-05 2.30E-04 4.77E-05 4.83E-05 4.83E-05 3.74E-04 6.68E-05 5.27E-05
Particulate matter formation [kg PM2.5eq.] 6.18E-01 6.18E-01 3.67E-01 5.84E-01 5.84E-01 3.56E-01 5.46E-01 4.24E-01 3.40E-01 4.25E-01 5.47E-01 3.11E-01 3.76E-01 4.81E-01 4.81E-01 3.23E-01 3.10E-01 2.83E-01
Photochemical oxidant formation [kg NMVOCeq.] 8.44E+00 8.41E+00 7.50E+00 6.18E+00 6.17E+00 5.09E+00 7.75E+00 4.05E+00 7.04E+00 4.05E+00 7.73E+00 3.67E+00 2.00E+00 7.12E+00 7.11E+00 6.81E+00 1.61E+00 1.44E+00
Terrestrial acidification [kg SO2eq.] 1.90E-02 1.90E-02 1.27E-02 1.58E-02 1.58E-02 1.01E-02 1.69E-02 1.15E-02 1.19E-02 1.15E-02 1.70E-02 8.61E-03 7.98E-03 1.49E-02 1.49E-02 1.15E-02 6.64E-03 5.91E-03
Water scarcity [m3eq.] 1.48E+03 1.48E+03 1.51E+02 1.37E+03 1.37E+03 2.46E+02 1.28E+03 8.63E+02 1.50E+02 8.63E+02 1.28E+03 2.30E+02 5.98E+02 1.07E+03 1.07E+03 1.36E+02 4.99E+02 4.28E+02

Design Mission

In [204]:
Medians_midpoint_all_results_NDC_design=Medians_midpoint_all_results_NDC[Medians_midpoint_all_results_NDC['Mission']=='Design']
Medians_midpoint_all_results_NDC_design=Medians_midpoint_all_results_NDC[Medians_midpoint_all_results_NDC['Mission']=='Design']
NDC_design=Medians_midpoint_all_results_NDC_design.pivot('Category and unit','Summary','Value').astype(float).style.format('{:.2E}')
NDC_design
C:\Users\kmadu\AppData\Local\Temp\ipykernel_17960\1504253113.py:3: FutureWarning: In a future version of pandas all arguments of DataFrame.pivot will be keyword-only.
  NDC_design=Medians_midpoint_all_results_NDC_design.pivot('Category and unit','Summary','Value').astype(float).style.format('{:.2E}')
Out[204]:
Summary 2030 Conventional (AAF) 2030 Conventional (ILUC) 2030 Conventional (Kerosene) 2030 GT-bat (AAF) 2030 GT-bat (ILUC) 2030 GT-bat (Kerosene) 2040 Conventional (AAF) 2040 Conventional (ILUC) 2040 Conventional (Kerosene) 2040 GT-bat (AAF) 2040 GT-bat (ILUC) 2040 GT-bat (Kerosene) 2040 PEMFC-bat (H2) 2050 Conventional (AAF) 2050 Conventional (ILUC) 2050 Conventional (Kerosene) 2050 PEMFC-bat (H2) 2050 SOFC-bat (H2)
Category and unit                                    
Climate change, long term [kg CO2eq.] 1.75E+03 2.42E+03 4.14E+03 2.09E+03 2.74E+03 4.15E+03 1.43E+03 1.59E+03 3.75E+03 1.17E+03 2.00E+03 2.97E+03 7.54E+02 1.14E+03 7.52E+02 3.62E+03 5.81E+02 5.15E+02
Climate change, short term [kg CO2eq.] 1.97E+03 2.64E+03 4.21E+03 2.32E+03 2.97E+03 4.22E+03 1.62E+03 1.74E+03 3.81E+03 1.32E+03 2.19E+03 3.02E+03 8.05E+02 1.29E+03 8.30E+02 3.67E+03 6.29E+02 5.59E+02
Fossil and nuclear energy use [MJ dep.] 1.89E+04 1.89E+04 6.23E+04 3.71E+04 3.71E+04 6.45E+04 1.64E+04 1.52E+04 5.65E+04 1.52E+04 1.64E+04 5.21E+04 4.02E+04 1.35E+04 7.09E+03 5.40E+04 2.03E+04 1.74E+04
Freshwater acidification [kg SO2eq.] 3.90E-05 3.91E-05 3.12E-05 4.37E-05 4.37E-05 3.27E-05 3.51E-05 3.01E-05 2.92E-05 3.02E-05 3.50E-05 2.81E-05 2.08E-05 3.13E-05 1.51E-05 2.81E-05 1.75E-05 1.48E-05
Freshwater ecotoxicity [CTUe] 4.85E+07 4.85E+07 3.78E+07 7.71E+07 7.71E+07 4.55E+07 5.13E+07 5.71E+07 3.81E+07 5.71E+07 5.13E+07 6.80E+07 1.75E+08 5.89E+07 4.64E+07 3.88E+07 1.64E+08 1.41E+08
Freshwater eutrophication [kg PO4eq.] 1.83E-01 1.83E-01 1.54E-01 1.91E-01 1.91E-01 1.56E-01 1.55E-01 1.20E-01 1.41E-01 1.20E-01 1.55E-01 1.11E-01 1.11E-01 1.25E-01 5.50E-02 1.36E-01 9.91E-02 7.83E-02
Human toxicity cancer [CTUh] 1.14E-04 1.14E-04 7.19E-05 1.99E-04 1.99E-04 9.70E-05 1.20E-04 1.28E-04 7.02E-05 1.28E-04 1.20E-04 1.57E-04 4.27E-04 1.48E-04 8.99E-05 6.88E-05 4.02E-04 3.52E-04
Human toxicity non cancer [CTUh] 3.53E-04 3.53E-04 3.05E-04 5.52E-04 5.52E-04 3.68E-04 3.62E-04 3.97E-04 2.99E-04 3.97E-04 3.62E-04 4.77E-04 1.19E-03 3.99E-04 3.14E-04 2.97E-04 1.09E-03 9.37E-04
Ionizing radiations [Bq C14eq.] 1.20E+04 1.20E+04 3.01E+04 9.63E+04 9.63E+04 4.50E+04 1.57E+04 2.22E+04 2.66E+04 2.22E+04 1.57E+04 6.72E+04 1.78E+05 1.56E+04 8.08E+03 2.45E+04 7.47E+04 6.30E+04
Land occupation, biodiversity [m2eq*yr.] 2.13E+03 2.13E+03 3.83E+01 2.15E+03 2.15E+03 4.70E+01 1.90E+03 1.42E+03 3.81E+01 1.42E+03 1.90E+03 7.21E+01 1.71E+02 1.74E+03 7.64E+02 3.80E+01 1.34E+02 1.16E+02
Land transformation, biodiversity [m2eq.] 4.69E-01 4.69E-01 8.56E-01 8.34E-01 8.34E-01 9.15E-01 4.69E-01 4.83E-01 8.01E-01 4.83E-01 4.69E-01 1.05E+00 1.80E+00 5.26E-01 3.16E-01 7.75E-01 1.62E+00 1.38E+00
Marine eutrophication [kg Neq.] 6.58E-01 6.57E-01 3.47E-01 7.27E-01 7.29E-01 3.85E-01 5.99E-01 4.93E-01 3.34E-01 4.93E-01 5.97E-01 3.23E-01 2.15E-01 5.39E-01 2.37E-01 3.25E-01 1.82E-01 1.60E-01
Mineral resources use [kg dep.] 5.89E+01 5.89E+01 5.55E+01 6.30E+01 6.30E+01 5.75E+01 5.85E+01 5.86E+01 5.53E+01 5.86E+01 5.85E+01 5.82E+01 6.41E+01 5.85E+01 5.52E+01 5.53E+01 6.29E+01 6.19E+01
Ozone Layer Depletion [kg CFC-11eq.] 1.60E-04 1.60E-04 9.69E-04 1.92E-04 1.92E-04 9.50E-04 1.30E-04 1.07E-04 8.85E-04 1.07E-04 1.30E-04 6.77E-04 1.17E-04 9.77E-05 4.83E-05 8.53E-04 1.17E-04 9.34E-05
Particulate matter formation [kg PM2.5eq.] 1.23E+00 1.24E+00 6.57E-01 1.43E+00 1.43E+00 7.13E-01 1.08E+00 9.13E-01 6.00E-01 9.14E-01 1.08E+00 6.65E-01 8.54E-01 9.38E-01 4.81E-01 5.74E-01 6.84E-01 5.90E-01
Photochemical oxidant formation [kg NMVOCeq.] 1.95E+01 1.96E+01 1.74E+01 2.18E+01 2.19E+01 1.83E+01 1.81E+01 1.51E+01 1.64E+01 1.51E+01 1.80E+01 1.46E+01 4.93E+00 1.67E+01 7.11E+00 1.59E+01 3.68E+00 3.18E+00
Terrestrial acidification [kg SO2eq.] 4.09E-02 4.09E-02 2.62E-02 4.48E-02 4.48E-02 2.75E-02 3.63E-02 3.04E-02 2.45E-02 3.04E-02 3.63E-02 2.36E-02 1.73E-02 3.17E-02 1.49E-02 2.37E-02 1.44E-02 1.22E-02
Water scarcity [m3eq.] 3.25E+03 3.25E+03 1.82E+02 3.69E+03 3.69E+03 2.88E+02 2.79E+03 2.18E+03 1.67E+02 2.18E+03 2.79E+03 5.27E+02 1.82E+03 2.30E+03 1.07E+03 1.53E+02 1.42E+03 1.20E+03
Base¶
In [205]:
Medians_midpoint_all_results_Base=Medians_midpoint_all_results[Medians_midpoint_all_results['Scenario']=='Base']                                                         

Typical Mission

In [206]:
Medians_midpoint_all_results_Base_typical=Medians_midpoint_all_results_Base[Medians_midpoint_all_results_Base['Mission']=='Typical']
Base_typical=Medians_midpoint_all_results_Base_typical.pivot('Category and unit','Summary','Value').astype(float).style.format('{:.2E}')
Base_typical
C:\Users\kmadu\AppData\Local\Temp\ipykernel_17960\3265215117.py:2: FutureWarning: In a future version of pandas all arguments of DataFrame.pivot will be keyword-only.
  Base_typical=Medians_midpoint_all_results_Base_typical.pivot('Category and unit','Summary','Value').astype(float).style.format('{:.2E}')
Out[206]:
Summary 2030 Conventional (AAF) 2030 Conventional (Kerosene) 2030 GT-bat (AAF) 2030 GT-bat (Kerosene) 2040 Conventional (AAF) 2040 Conventional (Kerosene) 2040 GT-bat (AAF) 2040 GT-bat (Kerosene) 2040 PEMFC-bat (H2) 2050 Conventional (AAF) 2050 Conventional (Kerosene) 2050 PEMFC-bat (H2) 2050 SOFC-bat (H2)
Category and unit                          
Climate change, long term [kg CO2eq.] 9.29E+02 1.95E+03 1.21E+03 1.79E+03 8.43E+02 1.79E+03 7.34E+02 1.27E+03 9.28E+02 6.90E+02 1.70E+03 5.31E+02 4.73E+02
Climate change, short term [kg CO2eq.] 1.04E+03 1.99E+03 1.32E+03 1.84E+03 9.45E+02 1.83E+03 8.17E+02 1.31E+03 9.93E+02 7.75E+02 1.75E+03 5.84E+02 5.20E+02
Fossil and nuclear energy use [MJ dep.] 1.06E+04 2.93E+04 2.02E+04 2.94E+04 1.04E+04 2.68E+04 1.14E+04 2.06E+04 2.22E+04 8.68E+03 2.53E+04 1.18E+04 1.02E+04
Freshwater acidification [kg SO2eq.] 1.89E-05 1.54E-05 1.67E-05 1.29E-05 1.71E-05 1.44E-05 1.24E-05 1.08E-05 1.09E-05 1.52E-05 1.39E-05 8.32E-06 7.40E-06
Freshwater ecotoxicity [CTUe] 4.14E+07 3.66E+07 5.20E+07 4.35E+07 4.34E+07 3.74E+07 5.00E+07 4.66E+07 7.78E+07 4.68E+07 3.79E+07 7.74E+07 6.94E+07
Freshwater eutrophication [kg PO4eq.] 8.00E-02 6.77E-02 6.90E-02 5.73E-02 6.79E-02 6.14E-02 4.26E-02 3.88E-02 3.35E-02 5.46E-02 5.98E-02 3.17E-02 2.57E-02
Human toxicity cancer [CTUh] 7.79E-05 5.89E-05 1.25E-04 8.83E-05 8.34E-05 5.92E-05 9.84E-05 8.50E-05 1.75E-04 9.30E-05 5.70E-05 1.54E-04 1.34E-04
Human toxicity non cancer [CTUh] 3.02E-04 2.79E-04 4.14E-04 3.48E-04 3.11E-04 2.79E-04 3.60E-04 3.41E-04 5.90E-04 3.22E-04 2.74E-04 5.29E-04 4.70E-04
Ionizing radiations [Bq C14eq.] 7.39E+03 1.53E+04 3.86E+04 2.91E+04 9.30E+03 1.35E+04 1.75E+04 1.99E+04 5.58E+04 8.71E+03 1.17E+04 2.53E+04 2.08E+04
Land occupation, biodiversity [m2eq*yr.] 9.31E+02 3.00E+01 7.51E+02 3.36E+01 8.30E+02 3.13E+01 4.85E+02 3.56E+01 5.48E+01 7.57E+02 3.12E+01 5.06E+01 4.62E+01
Land transformation, biodiversity [m2eq.] 2.83E-01 4.50E-01 3.63E-01 4.42E-01 2.92E-01 4.33E-01 3.16E-01 3.94E-01 5.48E-01 3.12E-01 4.19E-01 5.34E-01 4.59E-01
Marine eutrophication [kg Neq.] 2.90E-01 1.55E-01 2.37E-01 1.20E-01 2.65E-01 1.49E-01 1.59E-01 9.45E-02 9.06E-02 2.40E-01 1.46E-01 8.07E-02 7.20E-02
Mineral resources use [kg dep.] 5.53E+01 5.38E+01 5.67E+01 5.51E+01 5.52E+01 5.38E+01 5.55E+01 5.47E+01 5.60E+01 5.52E+01 5.38E+01 5.59E+01 5.60E+01
Ozone Layer Depletion [kg CFC-11eq.] 7.98E-05 4.29E-04 8.61E-05 3.47E-04 6.60E-05 3.88E-04 5.39E-05 2.34E-04 6.28E-05 5.02E-05 3.76E-04 7.52E-05 5.81E-05
Particulate matter formation [kg PM2.5eq.] 6.35E-01 3.79E-01 6.17E-01 3.77E-01 5.67E-01 3.54E-01 4.49E-01 3.29E-01 4.10E-01 4.92E-01 3.34E-01 3.20E-01 2.87E-01
Photochemical oxidant formation [kg NMVOCeq.] 8.56E+00 7.61E+00 6.67E+00 5.38E+00 7.88E+00 7.13E+00 4.31E+00 3.87E+00 2.73E+00 7.26E+00 6.86E+00 1.83E+00 1.63E+00
Terrestrial acidification [kg SO2eq.] 1.92E-02 1.28E-02 1.66E-02 1.06E-02 1.72E-02 1.20E-02 1.18E-02 8.86E-03 8.89E-03 1.50E-02 1.16E-02 6.78E-03 6.02E-03
Water scarcity [m3eq.] 1.49E+03 1.58E+02 1.48E+03 3.03E+02 1.30E+03 1.56E+02 9.09E+02 2.67E+02 7.53E+02 1.07E+03 1.36E+02 5.34E+02 4.53E+02

Design Mission

In [207]:
Medians_midpoint_all_results_Base_design=Medians_midpoint_all_results_Base[Medians_midpoint_all_results_Base['Mission']=='Design']
Medians_midpoint_all_results_Base_design=Medians_midpoint_all_results_Base[Medians_midpoint_all_results_Base['Mission']=='Design']
Base_design=Medians_midpoint_all_results_Base_design.pivot('Category and unit','Summary','Value').astype(float).style.format('{:.2E}')
Base_design
C:\Users\kmadu\AppData\Local\Temp\ipykernel_17960\263758391.py:3: FutureWarning: In a future version of pandas all arguments of DataFrame.pivot will be keyword-only.
  Base_design=Medians_midpoint_all_results_Base_design.pivot('Category and unit','Summary','Value').astype(float).style.format('{:.2E}')
Out[207]:
Summary 2030 Conventional (AAF) 2030 Conventional (Kerosene) 2030 GT-bat (AAF) 2030 GT-bat (Kerosene) 2040 Conventional (AAF) 2040 Conventional (Kerosene) 2040 GT-bat (AAF) 2040 GT-bat (Kerosene) 2040 PEMFC-bat (H2) 2050 Conventional (AAF) 2050 Conventional (Kerosene) 2050 PEMFC-bat (H2) 2050 SOFC-bat (H2)
Category and unit                          
Climate change, long term [kg CO2eq.] 1.86E+03 4.22E+03 3.00E+03 4.37E+03 1.64E+03 3.84E+03 1.44E+03 3.56E+03 2.77E+03 1.34E+03 3.69E+03 1.33E+03 1.15E+03
Climate change, short term [kg CO2eq.] 2.09E+03 4.29E+03 3.27E+03 4.46E+03 1.83E+03 3.90E+03 1.60E+03 3.65E+03 2.94E+03 1.50E+03 3.76E+03 1.43E+03 1.23E+03
Fossil and nuclear energy use [MJ dep.] 2.03E+04 6.34E+04 5.05E+04 6.77E+04 1.92E+04 5.73E+04 1.92E+04 6.16E+04 7.36E+04 1.66E+04 5.50E+04 3.36E+04 2.86E+04
Freshwater acidification [kg SO2eq.] 3.94E-05 3.14E-05 4.64E-05 3.34E-05 3.55E-05 2.94E-05 3.08E-05 2.91E-05 2.47E-05 3.15E-05 2.84E-05 1.78E-05 1.50E-05
Freshwater ecotoxicity [CTUe] 4.94E+07 3.84E+07 8.07E+07 4.63E+07 5.22E+07 3.84E+07 5.77E+07 6.91E+07 1.78E+08 5.97E+07 3.89E+07 1.64E+08 1.40E+08
Freshwater eutrophication [kg PO4eq.] 1.83E-01 1.54E-01 1.91E-01 1.56E-01 1.55E-01 1.41E-01 1.20E-01 1.11E-01 1.09E-01 1.25E-01 1.37E-01 9.68E-02 7.66E-02
Human toxicity cancer [CTUh] 1.20E-04 7.59E-05 2.56E-04 1.10E-04 1.29E-04 7.28E-05 1.38E-04 1.78E-04 4.97E-04 1.54E-04 7.07E-05 4.15E-04 3.54E-04
Human toxicity non cancer [CTUh] 3.65E-04 3.14E-04 6.78E-04 3.98E-04 3.81E-04 3.06E-04 4.22E-04 5.33E-04 1.39E-03 4.12E-04 3.02E-04 1.11E-03 9.49E-04
Ionizing radiations [Bq C14eq.] 1.22E+04 3.01E+04 1.02E+05 4.63E+04 1.69E+04 2.64E+04 2.42E+04 7.41E+04 2.08E+05 1.72E+04 2.43E+04 8.70E+04 7.26E+04
Land occupation, biodiversity [m2eq*yr.] 2.12E+03 3.45E+01 2.13E+03 3.89E+01 1.89E+03 3.58E+01 1.42E+03 5.89E+01 1.29E+02 1.73E+03 3.60E+01 1.09E+02 9.52E+01
Land transformation, biodiversity [m2eq.] 4.63E-01 8.50E-01 7.54E-01 8.96E-01 4.67E-01 7.93E-01 4.68E-01 9.92E-01 1.62E+00 5.24E-01 7.70E-01 1.51E+00 1.27E+00
Marine eutrophication [kg Neq.] 6.60E-01 3.50E-01 7.38E-01 3.87E-01 6.03E-01 3.35E-01 4.97E-01 3.29E-01 2.30E-01 5.45E-01 3.28E-01 1.79E-01 1.51E-01
Mineral resources use [kg dep.] 5.90E+01 5.56E+01 6.30E+01 5.76E+01 5.86E+01 5.53E+01 5.85E+01 5.79E+01 6.35E+01 5.86E+01 5.53E+01 6.26E+01 6.15E+01
Ozone Layer Depletion [kg CFC-11eq.] 1.64E-04 9.71E-04 2.13E-04 9.58E-04 1.33E-04 8.85E-04 1.13E-04 6.92E-04 1.73E-04 1.02E-04 8.57E-04 1.42E-04 1.14E-04
Particulate matter formation [kg PM2.5eq.] 1.26E+00 6.71E-01 1.50E+00 7.41E-01 1.11E+00 6.14E-01 9.47E-01 7.01E-01 9.36E-01 9.55E-01 5.85E-01 6.79E-01 5.80E-01
Photochemical oxidant formation [kg NMVOCeq.] 1.97E+01 1.75E+01 2.31E+01 1.87E+01 1.83E+01 1.66E+01 1.54E+01 1.54E+01 7.46E+00 1.69E+01 1.60E+01 4.37E+00 3.71E+00
Terrestrial acidification [kg SO2eq.] 4.12E-02 2.64E-02 4.70E-02 2.81E-02 3.67E-02 2.47E-02 3.10E-02 2.44E-02 2.04E-02 3.19E-02 2.39E-02 1.45E-02 1.23E-02
Water scarcity [m3eq.] 3.26E+03 1.88E+02 3.99E+03 3.42E+02 2.83E+03 1.72E+02 2.26E+03 6.78E+02 2.40E+03 2.32E+03 1.50E+02 1.53E+03 1.28E+03
PkBudg500¶
In [208]:
Medians_midpoint_all_results_PkBudg500=Medians_midpoint_all_results[Medians_midpoint_all_results['Scenario']=='PkBudg500']                                                         

Typical Mission

In [209]:
Medians_midpoint_all_results_PkBudg500_typical=Medians_midpoint_all_results_PkBudg500[Medians_midpoint_all_results_PkBudg500['Mission']=='Typical']
PkBudg500_typical=Medians_midpoint_all_results_PkBudg500_typical.pivot('Category and unit','Summary','Value').astype(float).style.format('{:.2E}')
PkBudg500_typical
C:\Users\kmadu\AppData\Local\Temp\ipykernel_17960\1610387013.py:2: FutureWarning: In a future version of pandas all arguments of DataFrame.pivot will be keyword-only.
  PkBudg500_typical=Medians_midpoint_all_results_PkBudg500_typical.pivot('Category and unit','Summary','Value').astype(float).style.format('{:.2E}')
Out[209]:
Summary 2030 Conventional (AAF) 2030 Conventional (Kerosene) 2030 GT-bat (AAF) 2030 GT-bat (Kerosene) 2040 Conventional (AAF) 2040 Conventional (Kerosene) 2040 GT-bat (AAF) 2040 GT-bat (Kerosene) 2040 PEMFC-bat (H2) 2050 Conventional (AAF) 2050 Conventional (Kerosene) 2050 PEMFC-bat (H2) 2050 SOFC-bat (H2)
Category and unit                          
Climate change, long term [kg CO2eq.] 8.17E+02 1.85E+03 7.88E+02 1.52E+03 6.73E+02 1.68E+03 4.81E+02 1.05E+03 2.93E+02 5.33E+02 1.62E+03 2.59E+02 2.36E+02
Climate change, short term [kg CO2eq.] 9.19E+02 1.89E+03 8.77E+02 1.56E+03 7.66E+02 1.72E+03 5.44E+02 1.09E+03 3.24E+02 6.20E+02 1.66E+03 2.93E+02 2.68E+02
Fossil and nuclear energy use [MJ dep.] 9.18E+03 2.82E+04 1.37E+04 2.56E+04 8.17E+03 2.56E+04 7.81E+03 1.76E+04 1.16E+04 6.70E+03 2.45E+04 7.16E+03 6.36E+03
Freshwater acidification [kg SO2eq.] 1.84E-05 1.50E-05 1.54E-05 1.20E-05 1.67E-05 1.42E-05 1.19E-05 1.04E-05 9.64E-06 1.51E-05 1.38E-05 8.28E-06 7.33E-06
Freshwater ecotoxicity [CTUe] 4.06E+07 3.60E+07 5.06E+07 4.27E+07 4.30E+07 3.72E+07 4.98E+07 4.65E+07 7.66E+07 4.67E+07 3.80E+07 7.75E+07 6.92E+07
Freshwater eutrophication [kg PO4eq.] 8.04E-02 6.78E-02 6.95E-02 5.79E-02 6.84E-02 6.18E-02 4.35E-02 3.95E-02 3.39E-02 5.50E-02 5.98E-02 3.23E-02 2.66E-02
Human toxicity cancer [CTUh] 7.27E-05 5.47E-05 1.03E-04 7.57E-05 7.80E-05 5.62E-05 9.18E-05 7.93E-05 1.55E-04 9.15E-05 5.64E-05 1.55E-04 1.36E-04
Human toxicity non cancer [CTUh] 2.88E-04 2.68E-04 3.62E-04 3.18E-04 2.97E-04 2.70E-04 3.40E-04 3.25E-04 5.37E-04 3.16E-04 2.71E-04 5.27E-04 4.66E-04
Ionizing radiations [Bq C14eq.] 7.03E+03 1.49E+04 3.46E+04 2.70E+04 8.16E+03 1.32E+04 1.48E+04 1.74E+04 4.39E+04 7.48E+03 1.17E+04 1.99E+04 1.70E+04
Land occupation, biodiversity [m2eq*yr.] 9.38E+02 3.27E+01 7.60E+02 3.94E+01 8.41E+02 3.59E+01 4.98E+02 4.36E+01 7.72E+01 7.80E+02 3.91E+01 6.99E+01 6.30E+01
Land transformation, biodiversity [m2eq.] 2.89E-01 4.57E-01 4.03E-01 4.66E-01 2.95E-01 4.39E-01 3.35E-01 4.13E-01 6.13E-01 3.09E-01 4.18E-01 5.64E-01 4.93E-01
Marine eutrophication [kg Neq.] 2.87E-01 1.53E-01 2.31E-01 1.16E-01 2.64E-01 1.49E-01 1.58E-01 9.27E-02 8.44E-02 2.40E-01 1.48E-01 8.21E-02 7.53E-02
Mineral resources use [kg dep.] 5.53E+01 5.38E+01 5.67E+01 5.51E+01 5.52E+01 5.38E+01 5.56E+01 5.48E+01 5.62E+01 5.52E+01 5.38E+01 5.59E+01 5.59E+01
Ozone Layer Depletion [kg CFC-11eq.] 7.70E-05 4.27E-04 7.57E-05 3.42E-04 6.24E-05 3.88E-04 4.88E-05 2.31E-04 4.41E-05 4.71E-05 3.74E-04 6.50E-05 5.20E-05
Particulate matter formation [kg PM2.5eq.] 5.96E-01 3.50E-01 5.58E-01 3.35E-01 5.38E-01 3.32E-01 4.15E-01 2.98E-01 3.54E-01 4.83E-01 3.26E-01 3.15E-01 2.81E-01
Photochemical oxidant formation [kg NMVOCeq.] 8.34E+00 7.44E+00 6.03E+00 5.00E+00 7.69E+00 7.00E+00 3.99E+00 3.61E+00 1.88E+00 7.12E+00 6.80E+00 1.61E+00 1.42E+00
Terrestrial acidification [kg SO2eq.] 1.88E-02 1.25E-02 1.56E-02 9.93E-03 1.69E-02 1.18E-02 1.15E-02 8.52E-03 7.90E-03 1.49E-02 1.15E-02 6.78E-03 6.00E-03
Water scarcity [m3eq.] 1.47E+03 1.49E+02 1.39E+03 2.53E+02 1.28E+03 1.44E+02 8.75E+02 2.39E+02 6.57E+02 1.07E+03 1.41E+02 5.61E+02 4.83E+02

Design Mission

In [210]:
Medians_midpoint_all_results_PkBudg500_design=Medians_midpoint_all_results_PkBudg500[Medians_midpoint_all_results_PkBudg500['Mission']=='Design']
Medians_midpoint_all_results_PkBudg500_design=Medians_midpoint_all_results_PkBudg500[Medians_midpoint_all_results_PkBudg500['Mission']=='Design']
PkBudg500_design=Medians_midpoint_all_results_PkBudg500_design.pivot('Category and unit','Summary','Value').astype(float).style.format('{:.2E}')
PkBudg500_design
C:\Users\kmadu\AppData\Local\Temp\ipykernel_17960\2003282372.py:3: FutureWarning: In a future version of pandas all arguments of DataFrame.pivot will be keyword-only.
  PkBudg500_design=Medians_midpoint_all_results_PkBudg500_design.pivot('Category and unit','Summary','Value').astype(float).style.format('{:.2E}')
Out[210]:
Summary 2030 Conventional (AAF) 2030 Conventional (Kerosene) 2030 GT-bat (AAF) 2030 GT-bat (Kerosene) 2040 Conventional (AAF) 2040 Conventional (Kerosene) 2040 GT-bat (AAF) 2040 GT-bat (Kerosene) 2040 PEMFC-bat (H2) 2050 Conventional (AAF) 2050 Conventional (Kerosene) 2050 PEMFC-bat (H2) 2050 SOFC-bat (H2)
Category and unit                          
Climate change, long term [kg CO2eq.] 1.67E+03 4.09E+03 1.91E+03 4.07E+03 1.35E+03 3.71E+03 1.10E+03 2.91E+03 6.16E+02 1.08E+03 3.59E+03 5.25E+02 4.56E+02
Climate change, short term [kg CO2eq.] 1.88E+03 4.15E+03 2.13E+03 4.13E+03 1.53E+03 3.77E+03 1.25E+03 2.97E+03 6.60E+02 1.24E+03 3.66E+03 5.70E+02 5.01E+02
Fossil and nuclear energy use [MJ dep.] 1.80E+04 6.16E+04 3.38E+04 6.32E+04 1.56E+04 5.57E+04 1.42E+04 5.08E+04 3.60E+04 1.27E+04 5.41E+04 1.87E+04 1.62E+04
Freshwater acidification [kg SO2eq.] 3.87E-05 3.08E-05 4.31E-05 3.24E-05 3.51E-05 2.91E-05 3.02E-05 2.79E-05 2.05E-05 3.13E-05 2.83E-05 1.78E-05 1.49E-05
Freshwater ecotoxicity [CTUe] 4.82E+07 3.75E+07 7.69E+07 4.53E+07 5.15E+07 3.80E+07 5.74E+07 6.83E+07 1.73E+08 5.93E+07 3.89E+07 1.67E+08 1.43E+08
Freshwater eutrophication [kg PO4eq.] 1.84E-01 1.54E-01 1.91E-01 1.57E-01 1.57E-01 1.41E-01 1.21E-01 1.12E-01 1.11E-01 1.26E-01 1.37E-01 9.99E-02 7.99E-02
Human toxicity cancer [CTUh] 1.12E-04 7.03E-05 2.00E-04 9.61E-05 1.20E-04 6.92E-05 1.28E-04 1.59E-04 4.31E-04 1.51E-04 6.93E-05 4.27E-04 3.59E-04
Human toxicity non cancer [CTUh] 3.45E-04 2.99E-04 5.45E-04 3.63E-04 3.59E-04 2.96E-04 3.95E-04 4.75E-04 1.17E-03 4.00E-04 2.97E-04 1.10E-03 9.48E-04
Ionizing radiations [Bq C14eq.] 1.16E+04 2.96E+04 9.14E+04 4.37E+04 1.45E+04 2.60E+04 2.04E+04 6.18E+04 1.61E+05 1.45E+04 2.43E+04 6.74E+04 5.81E+04
Land occupation, biodiversity [m2eq*yr.] 2.14E+03 3.89E+01 2.14E+03 4.67E+01 1.92E+03 4.30E+01 1.44E+03 8.46E+01 2.05E+02 1.78E+03 4.91E+01 1.68E+02 1.46E+02
Land transformation, biodiversity [m2eq.] 4.71E-01 8.58E-01 8.61E-01 9.20E-01 4.67E-01 7.94E-01 4.86E-01 1.06E+00 1.83E+00 5.13E-01 7.69E-01 1.63E+00 1.40E+00
Marine eutrophication [kg Neq.] 6.55E-01 3.45E-01 7.24E-01 3.82E-01 6.01E-01 3.34E-01 4.95E-01 3.25E-01 2.11E-01 5.44E-01 3.27E-01 1.87E-01 1.60E-01
Mineral resources use [kg dep.] 5.90E+01 5.55E+01 6.31E+01 5.76E+01 5.85E+01 5.53E+01 5.85E+01 5.80E+01 6.37E+01 5.85E+01 5.53E+01 6.28E+01 6.17E+01
Ozone Layer Depletion [kg CFC-11eq.] 1.59E-04 9.67E-04 1.85E-04 9.48E-04 1.27E-04 8.82E-04 1.06E-04 6.77E-04 1.08E-04 9.46E-05 8.56E-04 1.13E-04 9.05E-05
Particulate matter formation [kg PM2.5eq.] 1.20E+00 6.31E-01 1.38E+00 6.81E-01 1.07E+00 5.90E-01 9.03E-01 6.47E-01 8.01E-01 9.40E-01 5.76E-01 6.89E-01 5.92E-01
Photochemical oxidant formation [kg NMVOCeq.] 1.94E+01 1.73E+01 2.15E+01 1.82E+01 1.80E+01 1.64E+01 1.50E+01 1.45E+01 4.59E+00 1.67E+01 1.59E+01 3.65E+00 3.11E+00
Terrestrial acidification [kg SO2eq.] 4.07E-02 2.59E-02 4.42E-02 2.72E-02 3.64E-02 2.45E-02 3.05E-02 2.35E-02 1.70E-02 3.17E-02 2.38E-02 1.46E-02 1.23E-02
Water scarcity [m3eq.] 3.24E+03 1.78E+02 3.72E+03 2.92E+02 2.80E+03 1.62E+02 2.21E+03 5.89E+02 2.06E+03 2.33E+03 1.58E+02 1.64E+03 1.40E+03

Visualisations for article¶

Figure 2 Boxplot of endpoint results¶

(only for the endpoint baseline scenario and typical mission, no alternative aviation fuels are considered)

In [211]:
endpoints_NDC=endpoints_ST[endpoints_ST['Scenario']=='NDC']
endpoints_NDC_typical=endpoints_NDC[endpoints_NDC['Mission']=='Typical']
endpoints_NDC_typical_kero_h2=endpoints_NDC_typical[(endpoints_NDC_typical["Fuel"] != "AAF") & (endpoints_NDC_typical["Fuel"] != "ILUC")]
In [212]:
g=sns.catplot(endpoints_NDC_typical_kero_h2,x='Configuration',y='Value',row='Damage',col='Year',hue='Scenario',sharey='row',margin_titles=True, sharex=False,kind='box', units='Unit', height=3.5, aspect=1.1,legend=None)
g.set_axis_labels('', '') 
g.axes[0,0].set_ylabel("Ecosystem Quality [PDF*m2*year/FU]")
g.axes[0,0].set_title("2030")
g.axes[0,1].set_title("2040")
g.axes[0,2].set_title("2050")
g.axes[1,0].set_ylabel("Human Health [DALY/FU]")
g.axes[1,0].set_xlabel('')
g.axes[1,1].set_xlabel('')
g.axes[1,2].set_xlabel('')

#some outliers are excluded due to visibility considerations, the same figure with all outliers is presented in the supporting word file. To obtain that figure with all outliers the next two lines need to be outcommented.
g.axes[0,0].set_ylim(0, 1200)
g.axes[1,0].set_ylim(0, 0.007)


g.axes[1,0].yaxis.set_major_formatter(lambda x, pos: "{:.0E}".format(x))

for i, ax in enumerate(g.axes.flat):
    plt.setp(ax.texts, text='')

plt.savefig("F2_boxplot_endpoint_NDC.svg", format='svg')
#plt.savefig("SI_F2_boxplot_endpoint_NDC.svg", format='svg')

Figure 3 Contribution analysis on damage level¶

(only for the endpoint baseline scenario and typical mission, no alternative aviation fuels are considered)

In [213]:
#Selecting only short-term damages (see method import section for more detail)
cols_HH_ST = ["Climate change, human health, short term",'Water availability, human health','Photochemical oxidant formation','Ionizing radiation, human health','Ozone layer depletion','Human toxicity cancer, short term','Human toxicity non-cancer, short term','Particulate matter formation']
cols_EQ_ST =['Climate change, ecosystem quality, short term','Marine acidification, short term','Land occupation, biodiversity','Water availability, freshwater ecosystem','Water availability, terrestrial ecosystem','Thermally polluted water','Freshwater ecotoxicity, short term','Freshwater acidification','Terrestrial acidification','Freshwater eutrophication','Marine eutrophication','Land transformation, biodiversity','Ionizing radiation, ecosystem quality']

deterministic_endpoint_2030_renamed=deterministic_endpoint_typ_2030[0].rename(index={'typ_aircraft_conv_kero_NDC': 'Conventional', 'typ_aircraft_GT_bat_kero_NDC': 'GT-bat'})
deterministic_endpoint_2040_renamed=deterministic_endpoint_typ_2040[0].rename(index={'typ_aircraft_conv_kero_NDC': 'Conventional', 'typ_aircraft_GT_bat_kero_NDC': 'GT-bat','typ_aircraft_PEMFC_bat_NDC': 'PEMFC-bat'})
deterministic_endpoint_2050_renamed=deterministic_endpoint_typ_2050[0].rename(index={'typ_aircraft_conv_kero_NDC': 'Conventional','typ_aircraft_PEMFC_bat_NDC': 'PEMFC-bat','typ_aircraft_SOFC_bat_NDC': 'SOFC-bat'})

endpoint_HH_2030_ST=deterministic_endpoint_2030_renamed[cols_HH_ST]
endpoint_EQ_2030_ST=deterministic_endpoint_2030_renamed[cols_EQ_ST]

endpoint_HH_2040_ST=deterministic_endpoint_2040_renamed[cols_HH_ST]
endpoint_EQ_2040_ST=deterministic_endpoint_2040_renamed[cols_EQ_ST]

endpoint_HH_2050_ST=deterministic_endpoint_2050_renamed[cols_HH_ST]
endpoint_EQ_2050_ST=deterministic_endpoint_2050_renamed[cols_EQ_ST]

configs_2030=['Conventional','GT-bat']
configs_2040=['Conventional','GT-bat','PEMFC-bat']
configs_2050=['Conventional','PEMFC-bat','SOFC-bat']

endpoint_HH_2030_ST_NDC=endpoint_HH_2030_ST.loc[configs_2030]
endpoint_EQ_2030_ST_NDC=endpoint_EQ_2030_ST.loc[configs_2030]
endpoint_HH_2040_ST_NDC=endpoint_HH_2040_ST.loc[configs_2040]
endpoint_EQ_2040_ST_NDC=endpoint_EQ_2040_ST.loc[configs_2040]
endpoint_HH_2050_ST_NDC=endpoint_HH_2050_ST.loc[configs_2050]
endpoint_EQ_2050_ST_NDC=endpoint_EQ_2050_ST.loc[configs_2050]
In [214]:
#setting color palette
palette=sns.color_palette('tab20')[:13]
sns.color_palette(palette)
Out[214]:
In [215]:
# create stacked bar chart for ecosystem quality

#define subplot layout
fig, axes = plt.subplots(nrows=1, ncols=3, sharey=True, figsize=(9,5))

#add DataFrames to subplots
endpoint_EQ_2030_ST_NDC.plot(ax=axes[0],kind='bar', stacked=True, color=palette, fontsize=10, title='2030', legend=False)
endpoint_EQ_2040_ST_NDC.plot(ax=axes[1],kind='bar', stacked=True, color=palette, fontsize=10, title='2040',legend=False)
endpoint_EQ_2050_ST_NDC.plot(ax=axes[2],kind='bar', stacked=True, color=palette, fontsize=10, title='2050',legend=False)

handles, labels = axes[2].get_legend_handles_labels()
axes[0].set_ylabel('Ecosystem Quality [PDF*m2*year/FU]')
fig.legend(handles, labels,bbox_to_anchor=[1.15, 0.9],loc='upper center', frameon=False,fontsize=8)
sns.move_legend(fig, "lower center",bbox_to_anchor=(.5, -0.42), ncol=2,frameon=False)
axes[0].text(-0.05, 1.05, 'A', transform=axes[0].transAxes, size=20, weight='bold')

plt.savefig("F3A_contribution_damages_deterministic_EQ.svg", format='svg',bbox_inches='tight')
In [216]:
#setting color palette
alette=sns.color_palette('tab20')[:8]
sns.color_palette(palette)
Out[216]:
In [217]:
# create stacked bar chart for human health

#define subplot layout
fig, axes = plt.subplots(nrows=1, ncols=3, sharey=True,figsize=(8,5))

#add DataFrames to subplots
endpoint_HH_2030_ST_NDC.plot(ax=axes[0],kind='bar', stacked=True, color=palette, fontsize=10, title='2030', legend=False)
endpoint_HH_2040_ST_NDC.plot(ax=axes[1],kind='bar', stacked=True, color=palette, fontsize=10, title='2040',legend=False)
endpoint_HH_2050_ST_NDC.plot(ax=axes[2],kind='bar', stacked=True, color=palette, fontsize=10, title='2050',legend=False)

handles, labels = axes[2].get_legend_handles_labels()
axes[0].set_ylabel('Human Health [DALY/FU]')
fig.legend(handles, labels,bbox_to_anchor=[1.13, 0.9],loc='upper center',frameon=False)
sns.move_legend(fig, "lower center",bbox_to_anchor=(.5, -0.30), ncol=2,frameon=False)
axes[0].text(-0.05, 1.05, 'B', transform=axes[0].transAxes, size=20, weight='bold')
axes[0].yaxis.set_major_formatter(lambda x, pos: "{:.0E}".format(x))

plt.savefig("F3B_contribution_damages_deterministic_HH.svg", format='svg',bbox_inches='tight')

Figure 4 Contribution Analysis: life cycle stages¶

based on deterministic results, obtained in

In [218]:
#setting color palette
palette=sns.color_palette('tab20')[:6]
sns.color_palette(palette)
Out[218]:

Human health¶

In [219]:
#merging all life cycle stages dataframes for human health damages into one

contributions_HH=pd.concat([endpoint_stages_contribution_HH_2030,endpoint_stages_contribution_HH_2040,endpoint_stages_contribution_HH_2050])
contributions_HH=contributions_HH[['Mission','Configuration','Fuel','Airport use','Aircraft production','SAF production', 'Combustion','Kerosene production','Electricity production','H2','Year']]
contributions_HH=contributions_HH.rename({'H2':'Hydrogen production'}, axis='columns')

#summing all impacts to obtain the human health damage
contributions_HH['Sum']=contributions_HH.sum(axis = 1, numeric_only=True)
In [220]:
#2030
contributions_HH_2030_kerosene_typ=contributions_HH[((contributions_HH['Configuration']=='Conventional')|(contributions_HH['Configuration']=='GT-bat'))&(contributions_HH['Fuel']=='Kerosene') & (contributions_HH['Mission'] =='typical mission')&(contributions_HH['Year'] =='2030')]
contributions_HH_2030_kerosene_typ=contributions_HH_2030_kerosene_typ.drop(columns=['SAF production'])
contributions_HH_2030_kerosene_typ=contributions_HH_2030_kerosene_typ.reindex([6,4])
#2040
contributions_HH_2040_kerosene_typ=contributions_HH[((contributions_HH['Configuration']=='Conventional')|(contributions_HH['Configuration']=='GT-bat')|(contributions_HH['Configuration']=='PEMFC-bat'))&(contributions_HH['Fuel']=='Kerosene') & (contributions_HH['Mission'] =='typical mission')&(contributions_HH['Year'] =='2040')]
contributions_HH_2040_kerosene_typ=contributions_HH_2040_kerosene_typ.drop(columns=['SAF production'])
contributions_HH_2040_kerosene_typ=contributions_HH_2040_kerosene_typ.reindex([8,5,7])
#2050
contributions_HH_2050_kerosene_typ=contributions_HH[((contributions_HH['Configuration']=='Conventional')|(contributions_HH['Configuration']=='SOFC-bat')|(contributions_HH['Configuration']=='PEMFC-bat'))&(contributions_HH['Fuel']=='Kerosene') & (contributions_HH['Mission'] =='typical mission')&(contributions_HH['Year'] =='2050')]
contributions_HH_2050_kerosene_typ=contributions_HH_2050_kerosene_typ.drop(columns=['SAF production'])
contributions_HH_2050_kerosene_typ=contributions_HH_2050_kerosene_typ.reindex([6,4,5])
In [221]:
# obtaining the contributions of each stage in percent
percentages_HH=contributions_HH
percentages_HH['Combustion %']=percentages_HH['Combustion']*100/percentages_HH['Sum']
percentages_HH['SAF production %']=percentages_HH['SAF production']*100/percentages_HH['Sum']
percentages_HH['Airport use %']=percentages_HH['Airport use']*100/percentages_HH['Sum']
percentages_HH['Kerosene production %']=percentages_HH['Kerosene production']*100/percentages_HH['Sum']
percentages_HH['Electricity production %']=percentages_HH['Electricity production']*100/percentages_HH['Sum']
percentages_HH['Aircraft production %']=percentages_HH['Aircraft production']*100/percentages_HH['Sum']
percentages_HH['Hydrogen production %']=percentages_HH['Hydrogen production']*100/percentages_HH['Sum']
percentages_HH=percentages_HH.drop(columns=['Combustion','SAF production','Airport use','Kerosene production','Electricity production','Aircraft production','Hydrogen production','Sum'])

#2030
percentages_HH_2030_kerosene_typ=percentages_HH[((percentages_HH['Configuration']=='Conventional')|(percentages_HH['Configuration']=='GT-bat'))&(percentages_HH['Fuel']=='Kerosene') & (percentages_HH['Mission'] =='typical mission')&(percentages_HH['Year'] =='2030')]
percentages_HH_2030_kerosene_typ=percentages_HH_2030_kerosene_typ.reindex([6,4])

#2040
percentages_HH_2040_kerosene_typ=percentages_HH[((percentages_HH['Configuration']=='Conventional')|(percentages_HH['Configuration']=='GT-bat')|(percentages_HH['Configuration']=='PEMFC-bat'))&(percentages_HH['Fuel']=='Kerosene') & (percentages_HH['Mission'] =='typical mission')&(percentages_HH['Year'] =='2040')]
percentages_HH_2040_kerosene_typ=percentages_HH_2040_kerosene_typ.reindex([8,5,7])

#2050
percentages_HH_2050_kerosene_typ=percentages_HH[((percentages_HH['Configuration']=='Conventional')|(percentages_HH['Configuration']=='SOFC-bat')|(percentages_HH['Configuration']=='PEMFC-bat'))&(percentages_HH['Fuel']=='Kerosene') & (percentages_HH['Mission'] =='typical mission')&(percentages_HH['Year'] =='2050')]
percentages_HH_2050_kerosene_typ=percentages_HH_2050_kerosene_typ.reindex([6,4,5])
In [222]:
#creating barplot with stacked absolute values
fig, axes = plt.subplots(1, 3, sharex='col', sharey='row',figsize=(13, 7))

contributions_HH_2030_kerosene_typ.drop(columns=['Sum']).plot(kind='bar', x='Configuration', stacked=True, ax=axes[0], legend=False, title='2030', color=palette)
contributions_HH_2040_kerosene_typ.drop(columns=['Sum']).plot(kind='bar', x='Configuration', stacked=True, ax=axes[1], legend=False, title='2040', color=palette)
contributions_HH_2050_kerosene_typ.drop(columns=['Sum']).plot(kind='bar', x='Configuration', stacked=True, ax=axes[2], legend=False, title='2050', color=palette)

axes[0].set_ylabel(r'Human Health [DALY/FU]')
plt.legend(loc='center left', bbox_to_anchor=(0.255, 0.85))
axes[0].text(-0.05, 1.05, 'B', transform=axes[0].transAxes, size=20, weight='bold')


#adding the corresponding percentages onto the graph manually
# Airport Use 2030
for xpos, ypos, yval in zip([0,1],((contributions_HH_2030_kerosene_typ['Airport use'])/2).values, percentages_HH_2030_kerosene_typ['Airport use %'].values):
    axes[0].text(xpos, ypos, f"{yval:0.1f}%", ha="center", va="center",fontsize='11')
# Airport Use 2040
for xpos, ypos, yval in zip([0,1,2],((contributions_HH_2040_kerosene_typ['Airport use'])/2).values, percentages_HH_2040_kerosene_typ['Airport use %'].values):
    axes[1].text(xpos, ypos, f"{yval:0.1f}%", ha="center", va="center",fontsize='11')
# Airport Use 2050
for xpos, ypos, yval in zip([0,1,2],((contributions_HH_2050_kerosene_typ['Airport use'])/2).values, percentages_HH_2050_kerosene_typ['Airport use %'].values):
    axes[2].text(xpos, ypos, f"{yval:0.1f}%", ha="center", va="center",fontsize='11')

#Aircraft production 2030
for xpos, ypos, yval in zip([0,1],(contributions_HH_2030_kerosene_typ['Airport use']+(contributions_HH_2030_kerosene_typ['Aircraft production']/2)).values, percentages_HH_2030_kerosene_typ['Aircraft production %'].values):
    axes[0].text(xpos, ypos, f"{yval:0.1f}%", ha="center", va="center",fontsize='11')
#Aircraft production 2040
for xpos, ypos, yval in zip([0,1,2],(contributions_HH_2040_kerosene_typ['Airport use']+(contributions_HH_2040_kerosene_typ['Aircraft production']/2)).values, percentages_HH_2040_kerosene_typ['Aircraft production %'].values):
    axes[1].text(xpos, ypos, f"{yval:0.1f}%", ha="center", va="center",fontsize='11')  
#Aircraft production 2050
for xpos, ypos, yval in zip([0,1,2],(contributions_HH_2050_kerosene_typ['Airport use']+(contributions_HH_2050_kerosene_typ['Aircraft production']/2)).values, percentages_HH_2050_kerosene_typ['Aircraft production %'].values):
    axes[2].text(xpos, ypos, f"{yval:0.1f}%", ha="center", va="center",fontsize='11')
      
#Combustion 2030
for xpos, ypos, yval in zip([0,1],(contributions_HH_2030_kerosene_typ['Airport use']+contributions_HH_2030_kerosene_typ['Aircraft production']+(contributions_HH_2030_kerosene_typ['Combustion']/2)).values, percentages_HH_2030_kerosene_typ['Combustion %'].values):
    axes[0].text(xpos, ypos, f"{yval:0.1f}%", ha="center", va="center",fontsize='11') 
#Combustion 2040
for xpos, ypos, yval in zip([0,1],(contributions_HH_2040_kerosene_typ['Airport use']+contributions_HH_2040_kerosene_typ['Aircraft production']+(contributions_HH_2040_kerosene_typ['Combustion']/2)).values, percentages_HH_2040_kerosene_typ['Combustion %'].values):
    axes[1].text(xpos, ypos, f"{yval:0.1f}%", ha="center", va="center",fontsize='11')
#Combustion 2050
for xpos, ypos, yval in zip([0],(contributions_HH_2050_kerosene_typ['Airport use']+contributions_HH_2050_kerosene_typ['Aircraft production']+(contributions_HH_2050_kerosene_typ['Combustion']/2)).values, percentages_HH_2050_kerosene_typ['Combustion %'].values):
    axes[2].text(xpos, ypos, f"{yval:0.1f}%", ha="center", va="center",fontsize='11')

#Kerosene production 2030
for xpos, ypos, yval in zip([0,1],(contributions_HH_2030_kerosene_typ['Airport use']+contributions_HH_2030_kerosene_typ['Aircraft production']+contributions_HH_2030_kerosene_typ['Combustion']+(contributions_HH_2030_kerosene_typ['Kerosene production']/2)).values, percentages_HH_2030_kerosene_typ['Kerosene production %'].values):
    axes[0].text(xpos, ypos, f"{yval:0.1f}%", ha="center", va="center",fontsize='11') 
#Kerosene production 2040
for xpos, ypos, yval in zip([0,1],(contributions_HH_2040_kerosene_typ['Airport use']+contributions_HH_2040_kerosene_typ['Aircraft production']+contributions_HH_2040_kerosene_typ['Combustion']+(contributions_HH_2040_kerosene_typ['Kerosene production']/2)).values, percentages_HH_2040_kerosene_typ['Kerosene production %'].values):
    axes[1].text(xpos, ypos, f"{yval:0.1f}%", ha="center", va="center",fontsize='11') 
#Kerosene production 2050
for xpos, ypos, yval in zip([0],(contributions_HH_2050_kerosene_typ['Airport use']+contributions_HH_2050_kerosene_typ['Aircraft production']+contributions_HH_2050_kerosene_typ['Combustion']+(contributions_HH_2050_kerosene_typ['Kerosene production']/2)).values, percentages_HH_2050_kerosene_typ['Kerosene production %'].values):
    axes[2].text(xpos, ypos, f"{yval:0.1f}%", ha="center", va="center",fontsize='11')     
    
#Electricity production 2030
axes[0].text(1, (contributions_HH_2030_kerosene_typ['Airport use']+contributions_HH_2030_kerosene_typ['Aircraft production']+contributions_HH_2030_kerosene_typ['Combustion']+contributions_HH_2030_kerosene_typ['Kerosene production']+(contributions_HH_2030_kerosene_typ['Electricity production']/2)).values[1], f"{percentages_HH_2030_kerosene_typ['Electricity production %'].values[1]:0.1f}%", ha="center", va="center",fontsize='11')
#Electricity production 2040
axes[1].text(1, (contributions_HH_2040_kerosene_typ['Airport use']+contributions_HH_2040_kerosene_typ['Aircraft production']+contributions_HH_2040_kerosene_typ['Combustion']+contributions_HH_2040_kerosene_typ['Kerosene production']+(contributions_HH_2040_kerosene_typ['Electricity production']/2)).values[1], f"{percentages_HH_2040_kerosene_typ['Electricity production %'].values[1]:0.1f}%", ha="center", va="center",fontsize='11')
axes[1].text(2, (contributions_HH_2040_kerosene_typ['Airport use']+contributions_HH_2040_kerosene_typ['Aircraft production']+contributions_HH_2040_kerosene_typ['Combustion']+contributions_HH_2040_kerosene_typ['Kerosene production']+(contributions_HH_2040_kerosene_typ['Electricity production']/2)).values[2], f"{percentages_HH_2040_kerosene_typ['Electricity production %'].values[2]:0.1f}%", ha="center", va="center",fontsize='11')
#Electricity production 2050
axes[2].text(1, (contributions_HH_2050_kerosene_typ['Airport use']+contributions_HH_2050_kerosene_typ['Aircraft production']+contributions_HH_2050_kerosene_typ['Combustion']+contributions_HH_2050_kerosene_typ['Kerosene production']+(contributions_HH_2050_kerosene_typ['Electricity production']/2)).values[1], f"{percentages_HH_2050_kerosene_typ['Electricity production %'].values[1]:0.1f}%", ha="center", va="center",fontsize='11')
axes[2].text(2, (contributions_HH_2050_kerosene_typ['Airport use']+contributions_HH_2050_kerosene_typ['Aircraft production']+contributions_HH_2050_kerosene_typ['Combustion']+contributions_HH_2050_kerosene_typ['Kerosene production']+(contributions_HH_2050_kerosene_typ['Electricity production']/2)).values[2], f"{percentages_HH_2050_kerosene_typ['Electricity production %'].values[2]:0.1f}%", ha="center", va="center",fontsize='11')

#Hydrogen production production 2040
axes[1].text(2,(contributions_HH_2040_kerosene_typ['Airport use']+contributions_HH_2040_kerosene_typ['Aircraft production']+contributions_HH_2040_kerosene_typ['Combustion']+contributions_HH_2040_kerosene_typ['Kerosene production']+contributions_HH_2040_kerosene_typ['Electricity production']+(contributions_HH_2040_kerosene_typ['Hydrogen production']/2)).values[2], f"{percentages_HH_2040_kerosene_typ['Hydrogen production %'].values[2]:0.1f}%", ha="center", va="center",fontsize='11')
#Hydrogen production production 2050
axes[2].text(1,(contributions_HH_2050_kerosene_typ['Airport use']+contributions_HH_2050_kerosene_typ['Aircraft production']+contributions_HH_2050_kerosene_typ['Combustion']+contributions_HH_2050_kerosene_typ['Kerosene production']+contributions_HH_2050_kerosene_typ['Electricity production']+(contributions_HH_2050_kerosene_typ['Hydrogen production']/2)).values[1], f"{percentages_HH_2050_kerosene_typ['Hydrogen production %'].values[1]:0.1f}%", ha="center", va="center",fontsize='11')
#Hydrogen production production 2040
axes[2].text(2,(contributions_HH_2050_kerosene_typ['Airport use']+contributions_HH_2050_kerosene_typ['Aircraft production']+contributions_HH_2050_kerosene_typ['Combustion']+contributions_HH_2050_kerosene_typ['Kerosene production']+contributions_HH_2050_kerosene_typ['Electricity production']+(contributions_HH_2050_kerosene_typ['Hydrogen production']/2)).values[2], f"{percentages_HH_2050_kerosene_typ['Hydrogen production %'].values[2]:0.1f}%", ha="center", va="center",fontsize='11')

axes[0].yaxis.set_major_formatter(lambda x, pos: "{:.0E}".format(x))
plt.legend(bbox_to_anchor=(0.45, -0.25), ncol=3,frameon=False)

plt.savefig("F4B_contribution_stages_deterministic_NDC_HH.svg", format='svg',bbox_inches='tight')

Ecosystem Quality¶

In [223]:
#merging all life cycle stages dataframes for ecosystem quality damages into one

contributions_EQ=pd.concat([endpoint_stages_contribution_EQ_2030,endpoint_stages_contribution_EQ_2040,endpoint_stages_contribution_EQ_2050])
contributions_EQ=contributions_EQ[['Mission','Configuration','Fuel','Airport use','Aircraft production','SAF production', 'Combustion','Kerosene production','Electricity production','H2','Year']]
contributions_EQ=contributions_EQ.rename({'H2':'Hydrogen production'}, axis='columns')

#summing all damages to obtain the ecosystem quality value
contributions_EQ['Sum']=contributions_EQ.sum(axis = 1, numeric_only=True)
In [224]:
#2030
contributions_EQ_2030_kerosene_typ=contributions_EQ[((contributions_EQ['Configuration']=='Conventional')|(contributions_EQ['Configuration']=='GT-bat'))&(contributions_EQ['Fuel']=='Kerosene') & (contributions_EQ['Mission'] =='typical mission')&(contributions_EQ['Year'] =='2030')]
contributions_EQ_2030_kerosene_typ=contributions_EQ_2030_kerosene_typ.drop(columns=['SAF production'])
contributions_EQ_2030_kerosene_typ=contributions_EQ_2030_kerosene_typ.reindex([6,4])
#2040
contributions_EQ_2040_kerosene_typ=contributions_EQ[((contributions_EQ['Configuration']=='Conventional')|(contributions_EQ['Configuration']=='GT-bat')|(contributions_EQ['Configuration']=='PEMFC-bat'))&(contributions_EQ['Fuel']=='Kerosene') & (contributions_EQ['Mission'] =='typical mission')&(contributions_EQ['Year'] =='2040')]
contributions_EQ_2040_kerosene_typ=contributions_EQ_2040_kerosene_typ.drop(columns=['SAF production'])
contributions_EQ_2040_kerosene_typ=contributions_EQ_2040_kerosene_typ.reindex([8,5,7])
#2050
contributions_EQ_2050_kerosene_typ=contributions_EQ[((contributions_EQ['Configuration']=='Conventional')|(contributions_EQ['Configuration']=='SOFC-bat')|(contributions_EQ['Configuration']=='PEMFC-bat'))&(contributions_EQ['Fuel']=='Kerosene') & (contributions_EQ['Mission'] =='typical mission')&(contributions_EQ['Year'] =='2050')]
contributions_EQ_2050_kerosene_typ=contributions_EQ_2050_kerosene_typ.drop(columns=['SAF production'])
contributions_EQ_2050_kerosene_typ=contributions_EQ_2050_kerosene_typ.reindex([6,4,5])
In [225]:
# obtaining the contributions of each stage in percent
percentages_EQ=contributions_EQ
percentages_EQ['Combustion %']=percentages_EQ['Combustion']*100/percentages_EQ['Sum']
percentages_EQ['SAF production %']=percentages_EQ['SAF production']*100/percentages_EQ['Sum']
percentages_EQ['Airport use %']=percentages_EQ['Airport use']*100/percentages_EQ['Sum']
percentages_EQ['Kerosene production %']=percentages_EQ['Kerosene production']*100/percentages_EQ['Sum']
percentages_EQ['Electricity production %']=percentages_EQ['Electricity production']*100/percentages_EQ['Sum']
percentages_EQ['Aircraft production %']=percentages_EQ['Aircraft production']*100/percentages_EQ['Sum']
percentages_EQ['Hydrogen production %']=percentages_EQ['Hydrogen production']*100/percentages_EQ['Sum']
percentages_EQ=percentages_EQ.drop(columns=['Combustion','SAF production','Airport use','Kerosene production','Electricity production','Aircraft production','Hydrogen production','Sum'])

#2030
percentages_EQ_2030_kerosene_typ=percentages_EQ[((percentages_EQ['Configuration']=='Conventional')|(percentages_EQ['Configuration']=='GT-bat'))&(percentages_EQ['Fuel']=='Kerosene') & (percentages_EQ['Mission'] =='typical mission')&(percentages_EQ['Year'] =='2030')]
percentages_EQ_2030_kerosene_typ=percentages_EQ_2030_kerosene_typ.reindex([6,4])

#2040
percentages_EQ_2040_kerosene_typ=percentages_EQ[((percentages_EQ['Configuration']=='Conventional')|(percentages_EQ['Configuration']=='GT-bat')|(percentages_EQ['Configuration']=='PEMFC-bat'))&(percentages_EQ['Fuel']=='Kerosene') & (percentages_EQ['Mission'] =='typical mission')&(percentages_EQ['Year'] =='2040')]
percentages_EQ_2040_kerosene_typ=percentages_EQ_2040_kerosene_typ.reindex([8,5,7])

#2050
percentages_EQ_2050_kerosene_typ=percentages_EQ[((percentages_EQ['Configuration']=='Conventional')|(percentages_EQ['Configuration']=='SOFC-bat')|(percentages_EQ['Configuration']=='PEMFC-bat'))&(percentages_EQ['Fuel']=='Kerosene') & (percentages_EQ['Mission'] =='typical mission')&(percentages_EQ['Year'] =='2050')]
percentages_EQ_2050_kerosene_typ=percentages_EQ_2050_kerosene_typ.reindex([6,4,5])
In [226]:
#creating barplot with stacked absolute values
fig, axes = plt.subplots(1, 3, sharex='col', sharey='row',figsize=(13, 7))

contributions_EQ_2030_kerosene_typ.drop(columns=['Sum']).plot(kind='bar', x='Configuration', stacked=True, ax=axes[0], legend=False, title='2030', color=palette)
contributions_EQ_2040_kerosene_typ.drop(columns=['Sum']).plot(kind='bar', x='Configuration', stacked=True, ax=axes[1], legend=False, title='2040', color=palette)
contributions_EQ_2050_kerosene_typ.drop(columns=['Sum']).plot(kind='bar', x='Configuration', stacked=True, ax=axes[2], legend=False, title='2050', color=palette)

axes[0].set_ylabel(r'Ecosystem Quality [PDF*m2*year/FU]')
plt.legend(loc='center left', bbox_to_anchor=(0.255, 0.85))
axes[0].text(-0.05, 1.05, 'A', transform=axes[0].transAxes, size=20, weight='bold')


#adding the corresponding percentages onto the graph manually
# Airport Use 2030
for xpos, ypos, yval in zip([0,1],((contributions_EQ_2030_kerosene_typ['Airport use'])/2).values, percentages_EQ_2030_kerosene_typ['Airport use %'].values):
    axes[0].text(xpos, ypos, f"{yval:0.1f}%", ha="center", va="center",fontsize='11')
# Airport Use 2040
for xpos, ypos, yval in zip([0,1,2],((contributions_EQ_2040_kerosene_typ['Airport use'])/2).values, percentages_EQ_2040_kerosene_typ['Airport use %'].values):
    axes[1].text(xpos, ypos, f"{yval:0.1f}%", ha="center", va="center",fontsize='11')
# Airport Use 2050
for xpos, ypos, yval in zip([0,1,2],((contributions_EQ_2050_kerosene_typ['Airport use'])/2).values, percentages_EQ_2050_kerosene_typ['Airport use %'].values):
    axes[2].text(xpos, ypos, f"{yval:0.1f}%", ha="center", va="center",fontsize='11')

#Aircraft production 2030
for xpos, ypos, yval in zip([0,1],(contributions_EQ_2030_kerosene_typ['Airport use']+(contributions_EQ_2030_kerosene_typ['Aircraft production']/2)).values, percentages_EQ_2030_kerosene_typ['Aircraft production %'].values):
    axes[0].text(xpos, ypos, f"{yval:0.1f}%", ha="center", va="center",fontsize='11')
#Aircraft production 2040
for xpos, ypos, yval in zip([0,1,2],(contributions_EQ_2040_kerosene_typ['Airport use']+(contributions_EQ_2040_kerosene_typ['Aircraft production']/2)).values, percentages_EQ_2040_kerosene_typ['Aircraft production %'].values):
    axes[1].text(xpos, ypos, f"{yval:0.1f}%", ha="center", va="center",fontsize='11')  
#Aircraft production 2050
for xpos, ypos, yval in zip([0,1,2],(contributions_EQ_2050_kerosene_typ['Airport use']+(contributions_EQ_2050_kerosene_typ['Aircraft production']/2)).values, percentages_EQ_2050_kerosene_typ['Aircraft production %'].values):
    axes[2].text(xpos, ypos, f"{yval:0.1f}%", ha="center", va="center",fontsize='11')
      
#Combustion 2030
for xpos, ypos, yval in zip([0,1],(contributions_EQ_2030_kerosene_typ['Airport use']+contributions_EQ_2030_kerosene_typ['Aircraft production']+(contributions_EQ_2030_kerosene_typ['Combustion']/2)).values, percentages_EQ_2030_kerosene_typ['Combustion %'].values):
    axes[0].text(xpos, ypos, f"{yval:0.1f}%", ha="center", va="center",fontsize='11') 
#Combustion 2040
for xpos, ypos, yval in zip([0,1],(contributions_EQ_2040_kerosene_typ['Airport use']+contributions_EQ_2040_kerosene_typ['Aircraft production']+(contributions_EQ_2040_kerosene_typ['Combustion']/2)).values, percentages_EQ_2040_kerosene_typ['Combustion %'].values):
    axes[1].text(xpos, ypos, f"{yval:0.1f}%", ha="center", va="center",fontsize='11')
#Combustion 2050
for xpos, ypos, yval in zip([0],(contributions_EQ_2050_kerosene_typ['Airport use']+contributions_EQ_2050_kerosene_typ['Aircraft production']+(contributions_EQ_2050_kerosene_typ['Combustion']/2)).values, percentages_EQ_2050_kerosene_typ['Combustion %'].values):
    axes[2].text(xpos, ypos, f"{yval:0.1f}%", ha="center", va="center",fontsize='11')

#Kerosene production 2030
for xpos, ypos, yval in zip([0,1],(contributions_EQ_2030_kerosene_typ['Airport use']+contributions_EQ_2030_kerosene_typ['Aircraft production']+contributions_EQ_2030_kerosene_typ['Combustion']+(contributions_EQ_2030_kerosene_typ['Kerosene production']/2)).values, percentages_EQ_2030_kerosene_typ['Kerosene production %'].values):
    axes[0].text(xpos, ypos, f"{yval:0.1f}%", ha="center", va="center",fontsize='11') 
#Kerosene production 2040
for xpos, ypos, yval in zip([0,1],(contributions_EQ_2040_kerosene_typ['Airport use']+contributions_EQ_2040_kerosene_typ['Aircraft production']+contributions_EQ_2040_kerosene_typ['Combustion']+(contributions_EQ_2040_kerosene_typ['Kerosene production']/2)).values, percentages_EQ_2040_kerosene_typ['Kerosene production %'].values):
    axes[1].text(xpos, ypos, f"{yval:0.1f}%", ha="center", va="center",fontsize='11') 
#Kerosene production 2050
for xpos, ypos, yval in zip([0],(contributions_EQ_2050_kerosene_typ['Airport use']+contributions_EQ_2050_kerosene_typ['Aircraft production']+contributions_EQ_2050_kerosene_typ['Combustion']+(contributions_EQ_2050_kerosene_typ['Kerosene production']/2)).values, percentages_EQ_2050_kerosene_typ['Kerosene production %'].values):
    axes[2].text(xpos, ypos, f"{yval:0.1f}%", ha="center", va="center",fontsize='11')     
    
#Electricity production 2030
axes[0].text(1, (contributions_EQ_2030_kerosene_typ['Airport use']+contributions_EQ_2030_kerosene_typ['Aircraft production']+contributions_EQ_2030_kerosene_typ['Combustion']+contributions_EQ_2030_kerosene_typ['Kerosene production']+(contributions_EQ_2030_kerosene_typ['Electricity production']/2)).values[1], f"{percentages_EQ_2030_kerosene_typ['Electricity production %'].values[1]:0.1f}%", ha="center", va="center",fontsize='11')
#Electricity production 2040
axes[1].text(1, (contributions_EQ_2040_kerosene_typ['Airport use']+contributions_EQ_2040_kerosene_typ['Aircraft production']+contributions_EQ_2040_kerosene_typ['Combustion']+contributions_EQ_2040_kerosene_typ['Kerosene production']+(contributions_EQ_2040_kerosene_typ['Electricity production']/2)).values[1], f"{percentages_EQ_2040_kerosene_typ['Electricity production %'].values[1]:0.1f}%", ha="center", va="center",fontsize='11')
axes[1].text(2, (contributions_EQ_2040_kerosene_typ['Airport use']+contributions_EQ_2040_kerosene_typ['Aircraft production']+contributions_EQ_2040_kerosene_typ['Combustion']+contributions_EQ_2040_kerosene_typ['Kerosene production']+(contributions_EQ_2040_kerosene_typ['Electricity production']/2)).values[2], f"{percentages_EQ_2040_kerosene_typ['Electricity production %'].values[2]:0.1f}%", ha="center", va="center",fontsize='11')
#Electricity production 2050
axes[2].text(1, (contributions_EQ_2050_kerosene_typ['Airport use']+contributions_EQ_2050_kerosene_typ['Aircraft production']+contributions_EQ_2050_kerosene_typ['Combustion']+contributions_EQ_2050_kerosene_typ['Kerosene production']+(contributions_EQ_2050_kerosene_typ['Electricity production']/2)).values[1], f"{percentages_EQ_2050_kerosene_typ['Electricity production %'].values[1]:0.1f}%", ha="center", va="center",fontsize='11')
axes[2].text(2, (contributions_EQ_2050_kerosene_typ['Airport use']+contributions_EQ_2050_kerosene_typ['Aircraft production']+contributions_EQ_2050_kerosene_typ['Combustion']+contributions_EQ_2050_kerosene_typ['Kerosene production']+(contributions_EQ_2050_kerosene_typ['Electricity production']/2)).values[2], f"{percentages_EQ_2050_kerosene_typ['Electricity production %'].values[2]:0.1f}%", ha="center", va="center",fontsize='11')

#Hydrogen production production 2040
axes[1].text(2,(contributions_EQ_2040_kerosene_typ['Airport use']+contributions_EQ_2040_kerosene_typ['Aircraft production']+contributions_EQ_2040_kerosene_typ['Combustion']+contributions_EQ_2040_kerosene_typ['Kerosene production']+contributions_EQ_2040_kerosene_typ['Electricity production']+(contributions_EQ_2040_kerosene_typ['Hydrogen production']/2)).values[2], f"{percentages_EQ_2040_kerosene_typ['Hydrogen production %'].values[2]:0.1f}%", ha="center", va="center",fontsize='11')
#Hydrogen production production 2050
axes[2].text(1,(contributions_EQ_2050_kerosene_typ['Airport use']+contributions_EQ_2050_kerosene_typ['Aircraft production']+contributions_EQ_2050_kerosene_typ['Combustion']+contributions_EQ_2050_kerosene_typ['Kerosene production']+contributions_EQ_2050_kerosene_typ['Electricity production']+(contributions_EQ_2050_kerosene_typ['Hydrogen production']/2)).values[1], f"{percentages_EQ_2050_kerosene_typ['Hydrogen production %'].values[1]:0.1f}%", ha="center", va="center",fontsize='11')
#Hydrogen production production 2040
axes[2].text(2,(contributions_EQ_2050_kerosene_typ['Airport use']+contributions_EQ_2050_kerosene_typ['Aircraft production']+contributions_EQ_2050_kerosene_typ['Combustion']+contributions_EQ_2050_kerosene_typ['Kerosene production']+contributions_EQ_2050_kerosene_typ['Electricity production']+(contributions_EQ_2050_kerosene_typ['Hydrogen production']/2)).values[2], f"{percentages_EQ_2050_kerosene_typ['Hydrogen production %'].values[2]:0.1f}%", ha="center", va="center",fontsize='11')


plt.legend(bbox_to_anchor=(0.45, -0.25), ncol=3,frameon=False)
plt.savefig("F4A_contribution_stages_deterministic_NDC_EQ.svg", format='svg',bbox_inches='tight')

Figure 5 Comparison of SSP scenarios¶

only for the typical mission endpoints, without consideration for alternative aviation fuels

In [227]:
endpoints_ST_typical=endpoints_ST[endpoints_ST['Mission']=='Typical']
endpoints_ST_typical_h2_kero=endpoints_ST_typical[(endpoints_ST_typical["Fuel"] != "AAF") & (endpoints_ST_typical["Fuel"] != "ILUC")]
In [228]:
g=sns.catplot(endpoints_ST_typical_h2_kero,x='Configuration',y='Value',row='Damage',col='Year',hue='Scenario',sharey='row',margin_titles=True, sharex=False,kind='box', units='Unit', height=3.5, aspect=1)
sns.move_legend(g, "lower center",bbox_to_anchor=(.5, -0.04), ncol=4,frameon=False)
g.axes[0,0].set_ylabel("Ecosystem Quality [PDF*m2*year/FU]")
g.axes[1,0].set_ylabel("Human Health [DALY/FU]")
g.axes[0,0].set_title("2030")
g.axes[0,1].set_title("2040")
g.axes[0,2].set_title("2050")
g.axes[1,0].set_xlabel('')
g.axes[1,1].set_xlabel('')
g.axes[1,2].set_xlabel('')

#some outliers are excluded due to visibility considerations, the same figure with all outliers is presented in the supporting word file. To obtain that figure with all outliers the next two lines need to be outcommented.
g.axes[0,0].set_ylim(0, 1200)
g.axes[1,0].set_ylim(0, 0.007)
g.axes[1,0].yaxis.set_major_formatter(lambda x, pos: "{:.0E}".format(x))

for i, ax in enumerate(g.axes.flat):
    plt.setp(ax.texts, text='')

plt.savefig("F5_boxplot_endpoint_scenarios_noAAF.svg", format='svg',bbox_inches='tight')
#plt.savefig("SI_F5_boxplot_endpoint_scenarios_noAAF.svg", format='svg',bbox_inches='tight')

Figure 6 Comparison of different fuels¶

Comparison of kerosene, AAF and AAF+ILUC use as fuels. Only for the endpoint, typical mission and the baseline scenario.

In [229]:
endpoints_NDC=endpoints_ST[endpoints_ST['Scenario']=='NDC']
endpoints_NDC_typical=endpoints_NDC[endpoints_NDC['Mission']=='Typical']
endpoints_NDC_typical=endpoints_NDC_typical.replace(['H2'],'Hydrogen')
endpoints_NDC_typical=endpoints_NDC_typical.replace(['ILUC'],'AAF+ILUC')
In [230]:
g=sns.catplot(endpoints_NDC_typical,x='Configuration',y='Value',row='Damage',col='Year',hue='Fuel',sharey='row',margin_titles=True, sharex=False,kind='box', units='Unit', height=3.5, aspect=1,dodge=True)
sns.move_legend(g, "lower center",bbox_to_anchor=(.5, -0.04), ncol=4,frameon=False)
g.axes[0,0].set_ylabel("Ecosystem Quality [PDF*m2*year/FU]")
g.axes[1,0].set_ylabel("Human Health [DALY/FU]")
g.axes[0,0].set_title("2030")
g.axes[0,1].set_title("2040")
g.axes[0,2].set_title("2050")
g.axes[1,0].set_xlabel('')
g.axes[1,1].set_xlabel('')
g.axes[1,2].set_xlabel('')


#some outliers are excluded due to visibility considerations, the same figure with all outliers is presented in the supporting word file. To obtain that figure with all outliers the next two lines need to be outcommented.
g.axes[0,0].set_ylim(0, 1500)
g.axes[1,0].set_ylim(0, 0.007)
g.axes[1,0].yaxis.set_major_formatter(lambda x, pos: "{:.0E}".format(x))
for i, ax in enumerate(g.axes.flat):
    plt.setp(ax.texts, text='')
    
plt.savefig("F6_boxplot_endpoint_NDC_AAFs.svg", format='svg',bbox_inches='tight')
#plt.savefig("SI_F6_boxplot_endpoint_NDC_AAFs.svg", format='svg',bbox_inches='tight')

Appendix Figure: typical mission vs. design mission¶

Only for the endpoint baseline scenario with no consideration for alternative aviation fuels

In [231]:
endpoints_NDC=endpoints_ST[endpoints_ST['Scenario']=='NDC']
endpoints_NDC_kero_h2=endpoints_NDC[(endpoints_NDC["Fuel"] != "AAF") & (endpoints_NDC["Fuel"] != "ILUC")]
In [232]:
g=sns.catplot(endpoints_NDC_kero_h2,x='Mission',y='Value',row='Damage',col='Year',hue='Configuration',sharey='row',margin_titles=True, sharex=False,kind='box', units='Unit', height=3.5, aspect=1.1)
sns.move_legend(g, "lower center",bbox_to_anchor=(.5, -0.08), ncol=4,frameon=False)
g.axes[0,0].set_ylabel("Ecosystem Quality   [PDF*m2*year]")
g.axes[1,0].set_ylabel("Human Health   [DALY]")
g.axes[1,0].set_xlabel('')
g.axes[1,1].set_xlabel('')
g.axes[1,2].set_xlabel('')
g.axes[0,0].set_title("2030")
g.axes[0,1].set_title("2040")
g.axes[0,2].set_title("2050")
#zooming in on the y axis - outliers!
g.axes[0,0].set_ylim(0, 1600)
g.axes[1,0].set_ylim(0, 0.015)
g.axes[1,0].yaxis.set_major_formatter(lambda x, pos: "{:.0E}".format(x))
for i, ax in enumerate(g.axes.flat):
    plt.setp(ax.texts, text='')
plt.savefig("SI_boxplot_endpoint_missions_NDC_noAAF.svg", format='svg',bbox_inches='tight')

Appendix figure: comparison of SSP scenarios¶

Boxplots with midpoint results for the typical mission, with no consideration for alternative aviation fuels

In [233]:
#Midpoint for all ssp scenarios (only kerosene and h2)
MC_results_kero_h2=MC_results_Midpoint[(MC_results_Midpoint["Fuel"] != "AAF") & (MC_results_Midpoint["Fuel"] != "ILUC")]
j=sns.catplot(MC_results_kero_h2,x='Configuration',y='Value',row='Category',col='Year',hue='Scenario',sharey=False, sharex=False,kind='box',margin_titles=True, units='Unit')
sns.move_legend(j, "upper left", bbox_to_anchor=(0.92,1))


for i in range(len(units_IWP_mid)):
    j.axes[i,0].set_ylabel(IWP_mid[i][1]+" ["+units_IWP_mid[i]+"]")
    
j.axes[0,0].set_title("2030")
j.axes[0,1].set_title("2040")
j.axes[0,2].set_title("2050")
for i, ax in enumerate(j.axes.flat):
    plt.setp(ax.texts, text='')
plt.savefig("SI_boxplot_midpoint_scenarios_noAAF.svg", format='svg')

Appendix figure: comparison of fuels¶

Boxplots with midpoint results for the typical mission with the baseline scenario

In [234]:
#Midpoint for kero, h2, AAF and ILUC in NDC 
MC_results_NDC=MC_results_Midpoint[(MC_results_Midpoint["Scenario"] == "NDC") ]


j=sns.catplot(MC_results_NDC,x='Configuration',y='Value',row='Category',col='Year',hue='Fuel',sharey=False, sharex=False,kind='box',margin_titles=True, units='Unit')
sns.move_legend(j, "upper left", bbox_to_anchor=(0.92,1))

for i in range(len(units_IWP_mid)):
    j.axes[i,0].set_ylabel(IWP_mid[i][1]+" ["+units_IWP_mid[i]+"]")
    

plt.savefig("boxplot_midpoint_NDC_AAFs.svg", format='svg')